diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/BotCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/DataCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/GameCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/InraidCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/10ScopesAndTypes/types/callbacks/LocationCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/MatchCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/TraderCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/10ScopesAndTypes/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/10ScopesAndTypes/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/10ScopesAndTypes/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/10ScopesAndTypes/types/controllers/BotController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/BotController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/10ScopesAndTypes/types/controllers/CustomizationController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/CustomizationController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/10ScopesAndTypes/types/controllers/GameController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/GameController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/10ScopesAndTypes/types/controllers/HideoutController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/HideoutController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/10ScopesAndTypes/types/controllers/InraidController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/InraidController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/10ScopesAndTypes/types/controllers/InsuranceController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/InsuranceController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/10ScopesAndTypes/types/controllers/LocationController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/LocationController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/10ScopesAndTypes/types/controllers/MatchController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/MatchController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/10ScopesAndTypes/types/controllers/ProfileController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/ProfileController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/10ScopesAndTypes/types/controllers/QuestController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/QuestController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/10ScopesAndTypes/types/controllers/RagfairController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/RagfairController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/10ScopesAndTypes/types/controllers/TradeController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/TradeController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/10ScopesAndTypes/types/controllers/TraderController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/TraderController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/10ScopesAndTypes/types/controllers/WeatherController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/WeatherController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/10ScopesAndTypes/types/controllers/WishlistController.d.ts b/TypeScript/10ScopesAndTypes/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/10ScopesAndTypes/types/controllers/WishlistController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/10ScopesAndTypes/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/10ScopesAndTypes/types/generators/BotGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/BotGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/10ScopesAndTypes/types/generators/BotInventoryGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/10ScopesAndTypes/types/generators/BotLootGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/10ScopesAndTypes/types/generators/BotWeaponGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/10ScopesAndTypes/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/10ScopesAndTypes/types/generators/LocationGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/LocationLootGenerator.d.ts similarity index 89% rename from TypeScript/10ScopesAndTypes/types/generators/LocationGenerator.d.ts rename to TypeScript/10ScopesAndTypes/types/generators/LocationLootGenerator.d.ts index 9a2b0c4..6ef0bbc 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/LocationGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/LocationLootGenerator.d.ts @@ -3,8 +3,8 @@ 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 { ILooseLoot, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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"; @@ -17,7 +17,7 @@ import { ObjectId } from "@spt/utils/ObjectId"; import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export interface IContainerItem { - items: Item[]; + items: IItem[]; width: number; height: number; } @@ -27,7 +27,7 @@ export interface IContainerGroupCount { /** How many containers the map should spawn with this group id */ chosenCount: number; } -export declare class LocationGenerator { +export declare class LocationLootGenerator { protected logger: ILogger; protected databaseService: DatabaseService; protected objectId: ObjectId; @@ -49,7 +49,7 @@ export declare class LocationGenerator { * @param staticAmmoDist Static ammo distribution * @returns Array of container objects */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; /** * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist * @param staticContainers @@ -117,14 +117,14 @@ export declare class LocationGenerator { * @param locationName Location to generate loot for * @returns Array of spawn points with loot in them */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; /** * Add forced spawn point loot into loot parameter array * @param lootLocationTemplates array to add forced loot spawn locations to * @param forcedSpawnPoints forced Forced loot locations that must be added * @param locationName Name of map currently having force loot created for */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; /** * Create array of item (with child items) and return * @param chosenComposedKey Key we want to look up items for @@ -132,19 +132,13 @@ export declare class LocationGenerator { * @param staticAmmoDist ammo distributions * @returns IContainerItem */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; /** * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon * @param items Items array to search * @param chosenTpl Tpl we want to get item with * @returns Item object */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; } diff --git a/TypeScript/10ScopesAndTypes/types/generators/LootGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/LootGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/10ScopesAndTypes/types/generators/PlayerScavGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/10ScopesAndTypes/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/10ScopesAndTypes/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/10ScopesAndTypes/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/10ScopesAndTypes/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/10ScopesAndTypes/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/10ScopesAndTypes/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/10ScopesAndTypes/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/10ScopesAndTypes/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/10ScopesAndTypes/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/10ScopesAndTypes/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/BotHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/BotHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/10ScopesAndTypes/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/10ScopesAndTypes/types/helpers/DialogueHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/10ScopesAndTypes/types/helpers/HandbookHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/10ScopesAndTypes/types/helpers/HealthHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/HealthHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/10ScopesAndTypes/types/helpers/HideoutHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/InRaidHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/InventoryHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/10ScopesAndTypes/types/helpers/ItemHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/ItemHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/PresetHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/PresetHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/10ScopesAndTypes/types/helpers/ProfileHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/QuestHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/QuestHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/10ScopesAndTypes/types/helpers/RagfairHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/10ScopesAndTypes/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/RagfairSellHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/RagfairServerHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/RepairHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/RepairHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/10ScopesAndTypes/types/helpers/SecureContainerHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/TradeHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/TradeHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/10ScopesAndTypes/types/helpers/TraderAssortHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/10ScopesAndTypes/types/helpers/TraderHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/TraderHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/10ScopesAndTypes/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/10ScopesAndTypes/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/10ScopesAndTypes/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/10ScopesAndTypes/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/10ScopesAndTypes/types/loaders/BundleLoader.d.ts b/TypeScript/10ScopesAndTypes/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/10ScopesAndTypes/types/loaders/BundleLoader.d.ts +++ b/TypeScript/10ScopesAndTypes/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/IGlobals.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocation.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocationBase.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IItem.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/10ScopesAndTypes/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/10ScopesAndTypes/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/AirdropType.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/AirdropType.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/BaseClasses.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/ConfigTypes.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/HideoutAreas.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/HideoutEventActions.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/ItemTpl.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/QuestRewardType.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/TraderServiceType.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/Weapons.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/Weapons.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/10ScopesAndTypes/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/10ScopesAndTypes/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/10ScopesAndTypes/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/10ScopesAndTypes/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/10ScopesAndTypes/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/10ScopesAndTypes/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/10ScopesAndTypes/types/models/spt/config/IBotConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IBotDurability.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/ILootConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/controllers/IBotController.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/hideout/IHideout.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/templates/ITemplates.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/10ScopesAndTypes/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/10ScopesAndTypes/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/10ScopesAndTypes/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/10ScopesAndTypes/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/10ScopesAndTypes/types/routers/EventOutputHolder.d.ts b/TypeScript/10ScopesAndTypes/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/10ScopesAndTypes/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/10ScopesAndTypes/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/10ScopesAndTypes/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/10ScopesAndTypes/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/10ScopesAndTypes/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/10ScopesAndTypes/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/10ScopesAndTypes/types/routers/static/GameStaticRouter.d.ts b/TypeScript/10ScopesAndTypes/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/10ScopesAndTypes/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/10ScopesAndTypes/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/10ScopesAndTypes/types/servers/SaveServer.d.ts b/TypeScript/10ScopesAndTypes/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/10ScopesAndTypes/types/servers/SaveServer.d.ts +++ b/TypeScript/10ScopesAndTypes/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/10ScopesAndTypes/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/10ScopesAndTypes/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/10ScopesAndTypes/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/10ScopesAndTypes/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/10ScopesAndTypes/types/services/AirdropService.d.ts b/TypeScript/10ScopesAndTypes/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/10ScopesAndTypes/types/services/BotEquipmentFilterService.d.ts b/TypeScript/10ScopesAndTypes/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/10ScopesAndTypes/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/10ScopesAndTypes/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/10ScopesAndTypes/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/10ScopesAndTypes/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/10ScopesAndTypes/types/services/BotGenerationCacheService.d.ts b/TypeScript/10ScopesAndTypes/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/10ScopesAndTypes/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/10ScopesAndTypes/types/services/BotNameService.d.ts b/TypeScript/10ScopesAndTypes/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/10ScopesAndTypes/types/services/BotWeaponModLimitService.d.ts b/TypeScript/10ScopesAndTypes/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/10ScopesAndTypes/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/10ScopesAndTypes/types/services/CircleOfCultistService.d.ts b/TypeScript/10ScopesAndTypes/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/10ScopesAndTypes/types/services/CustomLocationWaveService.d.ts b/TypeScript/10ScopesAndTypes/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/10ScopesAndTypes/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/10ScopesAndTypes/types/services/DatabaseService.d.ts b/TypeScript/10ScopesAndTypes/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/10ScopesAndTypes/types/services/DatabaseService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/10ScopesAndTypes/types/services/FenceService.d.ts b/TypeScript/10ScopesAndTypes/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/10ScopesAndTypes/types/services/FenceService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/10ScopesAndTypes/types/services/InsuranceService.d.ts b/TypeScript/10ScopesAndTypes/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/10ScopesAndTypes/types/services/InsuranceService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/10ScopesAndTypes/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/10ScopesAndTypes/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/10ScopesAndTypes/types/services/LocationLifecycleService.d.ts b/TypeScript/10ScopesAndTypes/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/10ScopesAndTypes/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/10ScopesAndTypes/types/services/MailSendService.d.ts b/TypeScript/10ScopesAndTypes/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/10ScopesAndTypes/types/services/MailSendService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/10ScopesAndTypes/types/services/MapMarkerService.d.ts b/TypeScript/10ScopesAndTypes/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/10ScopesAndTypes/types/services/MapMarkerService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/10ScopesAndTypes/types/services/PaymentService.d.ts b/TypeScript/10ScopesAndTypes/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/10ScopesAndTypes/types/services/PaymentService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/10ScopesAndTypes/types/services/PmcChatResponseService.d.ts b/TypeScript/10ScopesAndTypes/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/10ScopesAndTypes/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/10ScopesAndTypes/types/services/ProfileFixerService.d.ts b/TypeScript/10ScopesAndTypes/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/10ScopesAndTypes/types/services/ProfileFixerService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/10ScopesAndTypes/types/services/RagfairOfferService.d.ts b/TypeScript/10ScopesAndTypes/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/10ScopesAndTypes/types/services/RagfairOfferService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/10ScopesAndTypes/types/services/RagfairPriceService.d.ts b/TypeScript/10ScopesAndTypes/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/10ScopesAndTypes/types/services/RagfairPriceService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/10ScopesAndTypes/types/services/RagfairTaxService.d.ts b/TypeScript/10ScopesAndTypes/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/10ScopesAndTypes/types/services/RagfairTaxService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/10ScopesAndTypes/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/10ScopesAndTypes/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/10ScopesAndTypes/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/10ScopesAndTypes/types/services/RepairService.d.ts b/TypeScript/10ScopesAndTypes/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/10ScopesAndTypes/types/services/RepairService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/10ScopesAndTypes/types/services/SeasonalEventService.d.ts b/TypeScript/10ScopesAndTypes/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/10ScopesAndTypes/types/services/SeasonalEventService.d.ts +++ b/TypeScript/10ScopesAndTypes/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/10ScopesAndTypes/types/services/TraderServicesService.d.ts b/TypeScript/10ScopesAndTypes/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/10ScopesAndTypes/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/10ScopesAndTypes/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/10ScopesAndTypes/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/10ScopesAndTypes/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/10ScopesAndTypes/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/10ScopesAndTypes/types/utils/HashUtil.d.ts b/TypeScript/10ScopesAndTypes/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/10ScopesAndTypes/types/utils/HashUtil.d.ts +++ b/TypeScript/10ScopesAndTypes/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/BotCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/DataCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/GameCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/InraidCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/11BundleLoadingSample/types/callbacks/LocationCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/MatchCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/TraderCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/11BundleLoadingSample/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/11BundleLoadingSample/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/11BundleLoadingSample/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/11BundleLoadingSample/types/controllers/BotController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/BotController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/11BundleLoadingSample/types/controllers/CustomizationController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/CustomizationController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/11BundleLoadingSample/types/controllers/GameController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/GameController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/11BundleLoadingSample/types/controllers/HideoutController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/HideoutController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/11BundleLoadingSample/types/controllers/InraidController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/InraidController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/11BundleLoadingSample/types/controllers/InsuranceController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/InsuranceController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/11BundleLoadingSample/types/controllers/LocationController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/LocationController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/11BundleLoadingSample/types/controllers/MatchController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/MatchController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/11BundleLoadingSample/types/controllers/ProfileController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/ProfileController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/11BundleLoadingSample/types/controllers/QuestController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/QuestController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/11BundleLoadingSample/types/controllers/RagfairController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/RagfairController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/11BundleLoadingSample/types/controllers/TradeController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/TradeController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/11BundleLoadingSample/types/controllers/TraderController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/TraderController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/11BundleLoadingSample/types/controllers/WeatherController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/WeatherController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/11BundleLoadingSample/types/controllers/WishlistController.d.ts b/TypeScript/11BundleLoadingSample/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/11BundleLoadingSample/types/controllers/WishlistController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/11BundleLoadingSample/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/11BundleLoadingSample/types/generators/BotGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/BotGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/11BundleLoadingSample/types/generators/BotInventoryGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/11BundleLoadingSample/types/generators/BotLootGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/11BundleLoadingSample/types/generators/BotWeaponGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/11BundleLoadingSample/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/11BundleLoadingSample/types/generators/LocationGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/LocationLootGenerator.d.ts similarity index 89% rename from TypeScript/11BundleLoadingSample/types/generators/LocationGenerator.d.ts rename to TypeScript/11BundleLoadingSample/types/generators/LocationLootGenerator.d.ts index 9a2b0c4..6ef0bbc 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/LocationGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/LocationLootGenerator.d.ts @@ -3,8 +3,8 @@ 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 { ILooseLoot, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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"; @@ -17,7 +17,7 @@ import { ObjectId } from "@spt/utils/ObjectId"; import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export interface IContainerItem { - items: Item[]; + items: IItem[]; width: number; height: number; } @@ -27,7 +27,7 @@ export interface IContainerGroupCount { /** How many containers the map should spawn with this group id */ chosenCount: number; } -export declare class LocationGenerator { +export declare class LocationLootGenerator { protected logger: ILogger; protected databaseService: DatabaseService; protected objectId: ObjectId; @@ -49,7 +49,7 @@ export declare class LocationGenerator { * @param staticAmmoDist Static ammo distribution * @returns Array of container objects */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; /** * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist * @param staticContainers @@ -117,14 +117,14 @@ export declare class LocationGenerator { * @param locationName Location to generate loot for * @returns Array of spawn points with loot in them */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; /** * Add forced spawn point loot into loot parameter array * @param lootLocationTemplates array to add forced loot spawn locations to * @param forcedSpawnPoints forced Forced loot locations that must be added * @param locationName Name of map currently having force loot created for */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; /** * Create array of item (with child items) and return * @param chosenComposedKey Key we want to look up items for @@ -132,19 +132,13 @@ export declare class LocationGenerator { * @param staticAmmoDist ammo distributions * @returns IContainerItem */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; /** * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon * @param items Items array to search * @param chosenTpl Tpl we want to get item with * @returns Item object */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; } diff --git a/TypeScript/11BundleLoadingSample/types/generators/LootGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/LootGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/11BundleLoadingSample/types/generators/PlayerScavGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/11BundleLoadingSample/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/11BundleLoadingSample/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/11BundleLoadingSample/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/11BundleLoadingSample/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/11BundleLoadingSample/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/11BundleLoadingSample/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/11BundleLoadingSample/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/11BundleLoadingSample/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/11BundleLoadingSample/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/11BundleLoadingSample/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/BotHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/BotHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/11BundleLoadingSample/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/11BundleLoadingSample/types/helpers/DialogueHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/11BundleLoadingSample/types/helpers/HandbookHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/11BundleLoadingSample/types/helpers/HealthHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/HealthHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/11BundleLoadingSample/types/helpers/HideoutHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/InRaidHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/InventoryHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/11BundleLoadingSample/types/helpers/ItemHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/ItemHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/PresetHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/PresetHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/11BundleLoadingSample/types/helpers/ProfileHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/QuestHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/QuestHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/11BundleLoadingSample/types/helpers/RagfairHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/11BundleLoadingSample/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/RagfairSellHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/RagfairServerHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/RepairHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/RepairHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/11BundleLoadingSample/types/helpers/SecureContainerHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/TradeHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/TradeHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/11BundleLoadingSample/types/helpers/TraderAssortHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/11BundleLoadingSample/types/helpers/TraderHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/TraderHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/11BundleLoadingSample/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/11BundleLoadingSample/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/11BundleLoadingSample/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/11BundleLoadingSample/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/11BundleLoadingSample/types/loaders/BundleLoader.d.ts b/TypeScript/11BundleLoadingSample/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/11BundleLoadingSample/types/loaders/BundleLoader.d.ts +++ b/TypeScript/11BundleLoadingSample/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/IGlobals.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocation.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocationBase.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IItem.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/11BundleLoadingSample/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/11BundleLoadingSample/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/AirdropType.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/AirdropType.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/BaseClasses.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/ConfigTypes.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/HideoutAreas.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/HideoutEventActions.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/ItemTpl.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/QuestRewardType.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/TraderServiceType.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/Weapons.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/Weapons.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/11BundleLoadingSample/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/11BundleLoadingSample/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/11BundleLoadingSample/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/11BundleLoadingSample/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/11BundleLoadingSample/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/11BundleLoadingSample/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/11BundleLoadingSample/types/models/spt/config/IBotConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IBotDurability.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/ILootConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/controllers/IBotController.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/hideout/IHideout.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/templates/ITemplates.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/11BundleLoadingSample/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/11BundleLoadingSample/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/11BundleLoadingSample/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/11BundleLoadingSample/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/11BundleLoadingSample/types/routers/EventOutputHolder.d.ts b/TypeScript/11BundleLoadingSample/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/11BundleLoadingSample/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/11BundleLoadingSample/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/11BundleLoadingSample/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/11BundleLoadingSample/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/11BundleLoadingSample/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/11BundleLoadingSample/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/11BundleLoadingSample/types/routers/static/GameStaticRouter.d.ts b/TypeScript/11BundleLoadingSample/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/11BundleLoadingSample/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/11BundleLoadingSample/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/11BundleLoadingSample/types/servers/SaveServer.d.ts b/TypeScript/11BundleLoadingSample/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/11BundleLoadingSample/types/servers/SaveServer.d.ts +++ b/TypeScript/11BundleLoadingSample/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/11BundleLoadingSample/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/11BundleLoadingSample/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/11BundleLoadingSample/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/11BundleLoadingSample/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/11BundleLoadingSample/types/services/AirdropService.d.ts b/TypeScript/11BundleLoadingSample/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/11BundleLoadingSample/types/services/BotEquipmentFilterService.d.ts b/TypeScript/11BundleLoadingSample/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/11BundleLoadingSample/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/11BundleLoadingSample/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/11BundleLoadingSample/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/11BundleLoadingSample/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/11BundleLoadingSample/types/services/BotGenerationCacheService.d.ts b/TypeScript/11BundleLoadingSample/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/11BundleLoadingSample/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/11BundleLoadingSample/types/services/BotNameService.d.ts b/TypeScript/11BundleLoadingSample/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/11BundleLoadingSample/types/services/BotWeaponModLimitService.d.ts b/TypeScript/11BundleLoadingSample/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/11BundleLoadingSample/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/11BundleLoadingSample/types/services/CircleOfCultistService.d.ts b/TypeScript/11BundleLoadingSample/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/11BundleLoadingSample/types/services/CustomLocationWaveService.d.ts b/TypeScript/11BundleLoadingSample/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/11BundleLoadingSample/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/11BundleLoadingSample/types/services/DatabaseService.d.ts b/TypeScript/11BundleLoadingSample/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/11BundleLoadingSample/types/services/DatabaseService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/11BundleLoadingSample/types/services/FenceService.d.ts b/TypeScript/11BundleLoadingSample/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/11BundleLoadingSample/types/services/FenceService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/11BundleLoadingSample/types/services/InsuranceService.d.ts b/TypeScript/11BundleLoadingSample/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/11BundleLoadingSample/types/services/InsuranceService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/11BundleLoadingSample/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/11BundleLoadingSample/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/11BundleLoadingSample/types/services/LocationLifecycleService.d.ts b/TypeScript/11BundleLoadingSample/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/11BundleLoadingSample/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/11BundleLoadingSample/types/services/MailSendService.d.ts b/TypeScript/11BundleLoadingSample/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/11BundleLoadingSample/types/services/MailSendService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/11BundleLoadingSample/types/services/MapMarkerService.d.ts b/TypeScript/11BundleLoadingSample/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/11BundleLoadingSample/types/services/MapMarkerService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/11BundleLoadingSample/types/services/PaymentService.d.ts b/TypeScript/11BundleLoadingSample/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/11BundleLoadingSample/types/services/PaymentService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/11BundleLoadingSample/types/services/PmcChatResponseService.d.ts b/TypeScript/11BundleLoadingSample/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/11BundleLoadingSample/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/11BundleLoadingSample/types/services/ProfileFixerService.d.ts b/TypeScript/11BundleLoadingSample/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/11BundleLoadingSample/types/services/ProfileFixerService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/11BundleLoadingSample/types/services/RagfairOfferService.d.ts b/TypeScript/11BundleLoadingSample/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/11BundleLoadingSample/types/services/RagfairOfferService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/11BundleLoadingSample/types/services/RagfairPriceService.d.ts b/TypeScript/11BundleLoadingSample/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/11BundleLoadingSample/types/services/RagfairPriceService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/11BundleLoadingSample/types/services/RagfairTaxService.d.ts b/TypeScript/11BundleLoadingSample/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/11BundleLoadingSample/types/services/RagfairTaxService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/11BundleLoadingSample/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/11BundleLoadingSample/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/11BundleLoadingSample/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/11BundleLoadingSample/types/services/RepairService.d.ts b/TypeScript/11BundleLoadingSample/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/11BundleLoadingSample/types/services/RepairService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/11BundleLoadingSample/types/services/SeasonalEventService.d.ts b/TypeScript/11BundleLoadingSample/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/11BundleLoadingSample/types/services/SeasonalEventService.d.ts +++ b/TypeScript/11BundleLoadingSample/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/11BundleLoadingSample/types/services/TraderServicesService.d.ts b/TypeScript/11BundleLoadingSample/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/11BundleLoadingSample/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/11BundleLoadingSample/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/11BundleLoadingSample/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/11BundleLoadingSample/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/11BundleLoadingSample/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/11BundleLoadingSample/types/utils/HashUtil.d.ts b/TypeScript/11BundleLoadingSample/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/11BundleLoadingSample/types/utils/HashUtil.d.ts +++ b/TypeScript/11BundleLoadingSample/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/BotCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/DataCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/GameCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/InraidCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/12ClassExtensionOverride/types/callbacks/LocationCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/MatchCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/TraderCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/12ClassExtensionOverride/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/12ClassExtensionOverride/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/BotController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/BotController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/CustomizationController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/CustomizationController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/GameController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/GameController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/HideoutController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/HideoutController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/InraidController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/InraidController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/12ClassExtensionOverride/types/controllers/InsuranceController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/InsuranceController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/LocationController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/LocationController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/MatchController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/MatchController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/ProfileController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/ProfileController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/QuestController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/QuestController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/RagfairController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/RagfairController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/TradeController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/TradeController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/TraderController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/TraderController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/WeatherController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/WeatherController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/12ClassExtensionOverride/types/controllers/WishlistController.d.ts b/TypeScript/12ClassExtensionOverride/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/12ClassExtensionOverride/types/controllers/WishlistController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/12ClassExtensionOverride/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/generators/BotGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/BotGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/12ClassExtensionOverride/types/generators/BotInventoryGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/12ClassExtensionOverride/types/generators/BotLootGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/12ClassExtensionOverride/types/generators/BotWeaponGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/12ClassExtensionOverride/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/12ClassExtensionOverride/types/generators/LocationGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/LocationLootGenerator.d.ts similarity index 89% rename from TypeScript/12ClassExtensionOverride/types/generators/LocationGenerator.d.ts rename to TypeScript/12ClassExtensionOverride/types/generators/LocationLootGenerator.d.ts index 9a2b0c4..6ef0bbc 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/LocationGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/LocationLootGenerator.d.ts @@ -3,8 +3,8 @@ 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 { ILooseLoot, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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"; @@ -17,7 +17,7 @@ import { ObjectId } from "@spt/utils/ObjectId"; import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export interface IContainerItem { - items: Item[]; + items: IItem[]; width: number; height: number; } @@ -27,7 +27,7 @@ export interface IContainerGroupCount { /** How many containers the map should spawn with this group id */ chosenCount: number; } -export declare class LocationGenerator { +export declare class LocationLootGenerator { protected logger: ILogger; protected databaseService: DatabaseService; protected objectId: ObjectId; @@ -49,7 +49,7 @@ export declare class LocationGenerator { * @param staticAmmoDist Static ammo distribution * @returns Array of container objects */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; /** * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist * @param staticContainers @@ -117,14 +117,14 @@ export declare class LocationGenerator { * @param locationName Location to generate loot for * @returns Array of spawn points with loot in them */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; /** * Add forced spawn point loot into loot parameter array * @param lootLocationTemplates array to add forced loot spawn locations to * @param forcedSpawnPoints forced Forced loot locations that must be added * @param locationName Name of map currently having force loot created for */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; /** * Create array of item (with child items) and return * @param chosenComposedKey Key we want to look up items for @@ -132,19 +132,13 @@ export declare class LocationGenerator { * @param staticAmmoDist ammo distributions * @returns IContainerItem */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; /** * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon * @param items Items array to search * @param chosenTpl Tpl we want to get item with * @returns Item object */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; } diff --git a/TypeScript/12ClassExtensionOverride/types/generators/LootGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/LootGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/12ClassExtensionOverride/types/generators/PlayerScavGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/12ClassExtensionOverride/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/12ClassExtensionOverride/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/12ClassExtensionOverride/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/12ClassExtensionOverride/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/12ClassExtensionOverride/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/12ClassExtensionOverride/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/12ClassExtensionOverride/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/BotHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/BotHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/DialogueHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/HandbookHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/HealthHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/HealthHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/HideoutHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/InRaidHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/InventoryHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/ItemHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/ItemHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/PresetHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/PresetHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/ProfileHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/QuestHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/QuestHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/RagfairHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/RagfairSellHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/RagfairServerHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/RepairHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/RepairHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/SecureContainerHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/TradeHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/TradeHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/TraderAssortHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/TraderHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/TraderHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/12ClassExtensionOverride/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/12ClassExtensionOverride/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/12ClassExtensionOverride/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/12ClassExtensionOverride/types/loaders/BundleLoader.d.ts b/TypeScript/12ClassExtensionOverride/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/12ClassExtensionOverride/types/loaders/BundleLoader.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/IGlobals.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocation.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocationBase.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IItem.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/12ClassExtensionOverride/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/AirdropType.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/AirdropType.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/BaseClasses.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/ConfigTypes.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/HideoutAreas.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/HideoutEventActions.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/ItemTpl.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/QuestRewardType.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/TraderServiceType.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/Weapons.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/Weapons.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/12ClassExtensionOverride/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/12ClassExtensionOverride/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/12ClassExtensionOverride/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/12ClassExtensionOverride/types/models/spt/config/IBotConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBotDurability.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILootConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/controllers/IBotController.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/hideout/IHideout.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/templates/ITemplates.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/12ClassExtensionOverride/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/12ClassExtensionOverride/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/12ClassExtensionOverride/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/12ClassExtensionOverride/types/routers/EventOutputHolder.d.ts b/TypeScript/12ClassExtensionOverride/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/12ClassExtensionOverride/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/12ClassExtensionOverride/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/12ClassExtensionOverride/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/12ClassExtensionOverride/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/12ClassExtensionOverride/types/routers/static/GameStaticRouter.d.ts b/TypeScript/12ClassExtensionOverride/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/12ClassExtensionOverride/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/12ClassExtensionOverride/types/servers/SaveServer.d.ts b/TypeScript/12ClassExtensionOverride/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/12ClassExtensionOverride/types/servers/SaveServer.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/12ClassExtensionOverride/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/12ClassExtensionOverride/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/12ClassExtensionOverride/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/12ClassExtensionOverride/types/services/AirdropService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/12ClassExtensionOverride/types/services/BotEquipmentFilterService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/12ClassExtensionOverride/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/12ClassExtensionOverride/types/services/BotGenerationCacheService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/12ClassExtensionOverride/types/services/BotNameService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/12ClassExtensionOverride/types/services/BotWeaponModLimitService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/12ClassExtensionOverride/types/services/CircleOfCultistService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/12ClassExtensionOverride/types/services/CustomLocationWaveService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/12ClassExtensionOverride/types/services/DatabaseService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/DatabaseService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/12ClassExtensionOverride/types/services/FenceService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/FenceService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/12ClassExtensionOverride/types/services/InsuranceService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/InsuranceService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/12ClassExtensionOverride/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/12ClassExtensionOverride/types/services/LocationLifecycleService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/12ClassExtensionOverride/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/12ClassExtensionOverride/types/services/MailSendService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/MailSendService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/12ClassExtensionOverride/types/services/MapMarkerService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/MapMarkerService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/12ClassExtensionOverride/types/services/PaymentService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/PaymentService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/12ClassExtensionOverride/types/services/PmcChatResponseService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/12ClassExtensionOverride/types/services/ProfileFixerService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/ProfileFixerService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/12ClassExtensionOverride/types/services/RagfairOfferService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/RagfairOfferService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/12ClassExtensionOverride/types/services/RagfairPriceService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/RagfairPriceService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/12ClassExtensionOverride/types/services/RagfairTaxService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/RagfairTaxService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/12ClassExtensionOverride/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/12ClassExtensionOverride/types/services/RepairService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/RepairService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/12ClassExtensionOverride/types/services/SeasonalEventService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/12ClassExtensionOverride/types/services/SeasonalEventService.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/12ClassExtensionOverride/types/services/TraderServicesService.d.ts b/TypeScript/12ClassExtensionOverride/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/12ClassExtensionOverride/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/12ClassExtensionOverride/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/12ClassExtensionOverride/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/12ClassExtensionOverride/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/12ClassExtensionOverride/types/utils/HashUtil.d.ts b/TypeScript/12ClassExtensionOverride/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/12ClassExtensionOverride/types/utils/HashUtil.d.ts +++ b/TypeScript/12ClassExtensionOverride/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/BotCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/DataCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/GameCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/InraidCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/13.1AddTraderWithAssortJSON/types/callbacks/LocationCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/MatchCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/TraderCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/BotController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/BotController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/CustomizationController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/CustomizationController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/GameController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/GameController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/HideoutController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/HideoutController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/InraidController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/InraidController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/13.1AddTraderWithAssortJSON/types/controllers/InsuranceController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/InsuranceController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/LocationController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/LocationController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/MatchController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/MatchController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/ProfileController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/ProfileController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/QuestController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/QuestController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/RagfairController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/RagfairController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/TradeController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/TradeController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/TraderController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/TraderController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/WeatherController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/WeatherController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/WishlistController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/WishlistController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotInventoryGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotLootGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotWeaponGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/LocationGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/LocationLootGenerator.d.ts similarity index 89% rename from TypeScript/13.1AddTraderWithAssortJSON/types/generators/LocationGenerator.d.ts rename to TypeScript/13.1AddTraderWithAssortJSON/types/generators/LocationLootGenerator.d.ts index 9a2b0c4..6ef0bbc 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/LocationGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/LocationLootGenerator.d.ts @@ -3,8 +3,8 @@ 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 { ILooseLoot, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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"; @@ -17,7 +17,7 @@ import { ObjectId } from "@spt/utils/ObjectId"; import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export interface IContainerItem { - items: Item[]; + items: IItem[]; width: number; height: number; } @@ -27,7 +27,7 @@ export interface IContainerGroupCount { /** How many containers the map should spawn with this group id */ chosenCount: number; } -export declare class LocationGenerator { +export declare class LocationLootGenerator { protected logger: ILogger; protected databaseService: DatabaseService; protected objectId: ObjectId; @@ -49,7 +49,7 @@ export declare class LocationGenerator { * @param staticAmmoDist Static ammo distribution * @returns Array of container objects */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; /** * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist * @param staticContainers @@ -117,14 +117,14 @@ export declare class LocationGenerator { * @param locationName Location to generate loot for * @returns Array of spawn points with loot in them */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; /** * Add forced spawn point loot into loot parameter array * @param lootLocationTemplates array to add forced loot spawn locations to * @param forcedSpawnPoints forced Forced loot locations that must be added * @param locationName Name of map currently having force loot created for */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; /** * Create array of item (with child items) and return * @param chosenComposedKey Key we want to look up items for @@ -132,19 +132,13 @@ export declare class LocationGenerator { * @param staticAmmoDist ammo distributions * @returns IContainerItem */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; /** * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon * @param items Items array to search * @param chosenTpl Tpl we want to get item with * @returns Item object */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/LootGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/LootGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/PlayerScavGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/13.1AddTraderWithAssortJSON/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/13.1AddTraderWithAssortJSON/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/DialogueHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HandbookHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HealthHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HealthHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HideoutHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/InRaidHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/InventoryHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/ItemHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/ItemHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/PresetHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/PresetHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/ProfileHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/QuestHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/QuestHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairSellHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairServerHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RepairHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RepairHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/SecureContainerHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TradeHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TradeHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TraderAssortHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TraderHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TraderHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/loaders/BundleLoader.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/loaders/BundleLoader.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/IGlobals.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocation.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocationBase.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IItem.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/AirdropType.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/AirdropType.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/BaseClasses.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/ConfigTypes.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/HideoutAreas.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/HideoutEventActions.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/ItemTpl.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/QuestRewardType.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/TraderServiceType.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/Weapons.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/Weapons.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/13.1AddTraderWithAssortJSON/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/13.1AddTraderWithAssortJSON/types/models/spt/config/IBotConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBotDurability.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILootConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/controllers/IBotController.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/hideout/IHideout.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/templates/ITemplates.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/routers/EventOutputHolder.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/routers/static/GameStaticRouter.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/servers/SaveServer.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/servers/SaveServer.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/AirdropService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotEquipmentFilterService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotGenerationCacheService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotNameService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotWeaponModLimitService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/CircleOfCultistService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/CustomLocationWaveService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/DatabaseService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/DatabaseService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/FenceService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/FenceService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/InsuranceService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/InsuranceService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/LocationLifecycleService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/MailSendService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/MailSendService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/MapMarkerService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/MapMarkerService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/PaymentService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/PaymentService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/PmcChatResponseService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/ProfileFixerService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/ProfileFixerService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairOfferService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairOfferService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairPriceService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairPriceService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairTaxService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairTaxService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RepairService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/RepairService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/SeasonalEventService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/SeasonalEventService.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/services/TraderServicesService.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/13.1AddTraderWithAssortJSON/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/13.1AddTraderWithAssortJSON/types/utils/HashUtil.d.ts b/TypeScript/13.1AddTraderWithAssortJSON/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/13.1AddTraderWithAssortJSON/types/utils/HashUtil.d.ts +++ b/TypeScript/13.1AddTraderWithAssortJSON/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/13AddTrader/types/callbacks/BotCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/13AddTrader/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/13AddTrader/types/callbacks/DataCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/13AddTrader/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/13AddTrader/types/callbacks/GameCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/13AddTrader/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/13AddTrader/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/13AddTrader/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/13AddTrader/types/callbacks/InraidCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/13AddTrader/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/13AddTrader/types/callbacks/LocationCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/13AddTrader/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/13AddTrader/types/callbacks/MatchCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/13AddTrader/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/13AddTrader/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/13AddTrader/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/13AddTrader/types/callbacks/TraderCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/13AddTrader/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/13AddTrader/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/13AddTrader/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/13AddTrader/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/13AddTrader/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/13AddTrader/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/13AddTrader/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/13AddTrader/types/controllers/BotController.d.ts b/TypeScript/13AddTrader/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/13AddTrader/types/controllers/BotController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/13AddTrader/types/controllers/CustomizationController.d.ts b/TypeScript/13AddTrader/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/13AddTrader/types/controllers/CustomizationController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/13AddTrader/types/controllers/GameController.d.ts b/TypeScript/13AddTrader/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/13AddTrader/types/controllers/GameController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/13AddTrader/types/controllers/HideoutController.d.ts b/TypeScript/13AddTrader/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/13AddTrader/types/controllers/HideoutController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/13AddTrader/types/controllers/InraidController.d.ts b/TypeScript/13AddTrader/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/13AddTrader/types/controllers/InraidController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/13AddTrader/types/controllers/InsuranceController.d.ts b/TypeScript/13AddTrader/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/13AddTrader/types/controllers/InsuranceController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/13AddTrader/types/controllers/LocationController.d.ts b/TypeScript/13AddTrader/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/13AddTrader/types/controllers/LocationController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/13AddTrader/types/controllers/MatchController.d.ts b/TypeScript/13AddTrader/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/13AddTrader/types/controllers/MatchController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/13AddTrader/types/controllers/ProfileController.d.ts b/TypeScript/13AddTrader/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/13AddTrader/types/controllers/ProfileController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/13AddTrader/types/controllers/QuestController.d.ts b/TypeScript/13AddTrader/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/13AddTrader/types/controllers/QuestController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/13AddTrader/types/controllers/RagfairController.d.ts b/TypeScript/13AddTrader/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/13AddTrader/types/controllers/RagfairController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/13AddTrader/types/controllers/TradeController.d.ts b/TypeScript/13AddTrader/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/13AddTrader/types/controllers/TradeController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/13AddTrader/types/controllers/TraderController.d.ts b/TypeScript/13AddTrader/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/13AddTrader/types/controllers/TraderController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/13AddTrader/types/controllers/WeatherController.d.ts b/TypeScript/13AddTrader/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/13AddTrader/types/controllers/WeatherController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/13AddTrader/types/controllers/WishlistController.d.ts b/TypeScript/13AddTrader/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/13AddTrader/types/controllers/WishlistController.d.ts +++ b/TypeScript/13AddTrader/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/13AddTrader/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/13AddTrader/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/13AddTrader/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/13AddTrader/types/generators/BotGenerator.d.ts b/TypeScript/13AddTrader/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/13AddTrader/types/generators/BotGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/13AddTrader/types/generators/BotInventoryGenerator.d.ts b/TypeScript/13AddTrader/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/13AddTrader/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/13AddTrader/types/generators/BotLootGenerator.d.ts b/TypeScript/13AddTrader/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/13AddTrader/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/13AddTrader/types/generators/BotWeaponGenerator.d.ts b/TypeScript/13AddTrader/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/13AddTrader/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/13AddTrader/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/13AddTrader/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/13AddTrader/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/13AddTrader/types/generators/LocationGenerator.d.ts b/TypeScript/13AddTrader/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/13AddTrader/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/13AddTrader/types/generators/LocationLootGenerator.d.ts b/TypeScript/13AddTrader/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/13AddTrader/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/13AddTrader/types/generators/LootGenerator.d.ts b/TypeScript/13AddTrader/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/13AddTrader/types/generators/LootGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/13AddTrader/types/generators/PlayerScavGenerator.d.ts b/TypeScript/13AddTrader/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/13AddTrader/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/13AddTrader/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/13AddTrader/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/13AddTrader/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/13AddTrader/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/13AddTrader/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/13AddTrader/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/13AddTrader/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/13AddTrader/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/13AddTrader/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/13AddTrader/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/13AddTrader/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/13AddTrader/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/13AddTrader/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/13AddTrader/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/13AddTrader/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/13AddTrader/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/13AddTrader/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/13AddTrader/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/13AddTrader/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/13AddTrader/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/13AddTrader/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/13AddTrader/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/13AddTrader/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/13AddTrader/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/13AddTrader/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/13AddTrader/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/13AddTrader/types/helpers/BotHelper.d.ts b/TypeScript/13AddTrader/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/13AddTrader/types/helpers/BotHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/13AddTrader/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/13AddTrader/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/13AddTrader/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/13AddTrader/types/helpers/DialogueHelper.d.ts b/TypeScript/13AddTrader/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/13AddTrader/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/13AddTrader/types/helpers/HandbookHelper.d.ts b/TypeScript/13AddTrader/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/13AddTrader/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/13AddTrader/types/helpers/HealthHelper.d.ts b/TypeScript/13AddTrader/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/13AddTrader/types/helpers/HealthHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/13AddTrader/types/helpers/HideoutHelper.d.ts b/TypeScript/13AddTrader/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/13AddTrader/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/13AddTrader/types/helpers/InRaidHelper.d.ts b/TypeScript/13AddTrader/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/13AddTrader/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/13AddTrader/types/helpers/InventoryHelper.d.ts b/TypeScript/13AddTrader/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/13AddTrader/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/13AddTrader/types/helpers/ItemHelper.d.ts b/TypeScript/13AddTrader/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/13AddTrader/types/helpers/ItemHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/13AddTrader/types/helpers/PresetHelper.d.ts b/TypeScript/13AddTrader/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/13AddTrader/types/helpers/PresetHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/13AddTrader/types/helpers/ProfileHelper.d.ts b/TypeScript/13AddTrader/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/13AddTrader/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/13AddTrader/types/helpers/QuestHelper.d.ts b/TypeScript/13AddTrader/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/13AddTrader/types/helpers/QuestHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/13AddTrader/types/helpers/RagfairHelper.d.ts b/TypeScript/13AddTrader/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/13AddTrader/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/13AddTrader/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/13AddTrader/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/13AddTrader/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/13AddTrader/types/helpers/RagfairSellHelper.d.ts b/TypeScript/13AddTrader/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/13AddTrader/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/13AddTrader/types/helpers/RagfairServerHelper.d.ts b/TypeScript/13AddTrader/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/13AddTrader/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/13AddTrader/types/helpers/RepairHelper.d.ts b/TypeScript/13AddTrader/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/13AddTrader/types/helpers/RepairHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/13AddTrader/types/helpers/SecureContainerHelper.d.ts b/TypeScript/13AddTrader/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/13AddTrader/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/13AddTrader/types/helpers/TradeHelper.d.ts b/TypeScript/13AddTrader/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/13AddTrader/types/helpers/TradeHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/13AddTrader/types/helpers/TraderAssortHelper.d.ts b/TypeScript/13AddTrader/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/13AddTrader/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/13AddTrader/types/helpers/TraderHelper.d.ts b/TypeScript/13AddTrader/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/13AddTrader/types/helpers/TraderHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/13AddTrader/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/13AddTrader/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/13AddTrader/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/13AddTrader/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/13AddTrader/types/loaders/BundleLoader.d.ts b/TypeScript/13AddTrader/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/13AddTrader/types/loaders/BundleLoader.d.ts +++ b/TypeScript/13AddTrader/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/13AddTrader/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/13AddTrader/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/13AddTrader/types/models/eft/common/IGlobals.d.ts b/TypeScript/13AddTrader/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/ILocation.d.ts b/TypeScript/13AddTrader/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/ILocationBase.d.ts b/TypeScript/13AddTrader/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/13AddTrader/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/13AddTrader/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/13AddTrader/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/IItem.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/13AddTrader/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/13AddTrader/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/13AddTrader/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/13AddTrader/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/13AddTrader/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/13AddTrader/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/13AddTrader/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/13AddTrader/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/13AddTrader/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/13AddTrader/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/13AddTrader/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/13AddTrader/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/13AddTrader/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/13AddTrader/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/13AddTrader/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/13AddTrader/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/13AddTrader/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/13AddTrader/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/13AddTrader/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/13AddTrader/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/13AddTrader/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/13AddTrader/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/13AddTrader/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/13AddTrader/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/13AddTrader/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/13AddTrader/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/13AddTrader/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/13AddTrader/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/13AddTrader/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/13AddTrader/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/13AddTrader/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/13AddTrader/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/13AddTrader/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/13AddTrader/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/13AddTrader/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/13AddTrader/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/13AddTrader/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/13AddTrader/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/13AddTrader/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/13AddTrader/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/13AddTrader/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/13AddTrader/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/13AddTrader/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/13AddTrader/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/13AddTrader/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/13AddTrader/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/13AddTrader/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/13AddTrader/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/13AddTrader/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/13AddTrader/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/13AddTrader/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/13AddTrader/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/13AddTrader/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/13AddTrader/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/13AddTrader/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/13AddTrader/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/13AddTrader/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/13AddTrader/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/13AddTrader/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/13AddTrader/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/13AddTrader/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/13AddTrader/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/13AddTrader/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/13AddTrader/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/13AddTrader/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/13AddTrader/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/13AddTrader/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/13AddTrader/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/13AddTrader/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/13AddTrader/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/13AddTrader/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/13AddTrader/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/13AddTrader/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/13AddTrader/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/13AddTrader/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/13AddTrader/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/13AddTrader/types/models/enums/AirdropType.d.ts b/TypeScript/13AddTrader/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/13AddTrader/types/models/enums/AirdropType.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/13AddTrader/types/models/enums/BaseClasses.d.ts b/TypeScript/13AddTrader/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/13AddTrader/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/13AddTrader/types/models/enums/ConfigTypes.d.ts b/TypeScript/13AddTrader/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/13AddTrader/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/13AddTrader/types/models/enums/HideoutAreas.d.ts b/TypeScript/13AddTrader/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/13AddTrader/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/13AddTrader/types/models/enums/HideoutEventActions.d.ts b/TypeScript/13AddTrader/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/13AddTrader/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/13AddTrader/types/models/enums/ItemTpl.d.ts b/TypeScript/13AddTrader/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/13AddTrader/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/13AddTrader/types/models/enums/QuestRewardType.d.ts b/TypeScript/13AddTrader/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/13AddTrader/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/13AddTrader/types/models/enums/TraderServiceType.d.ts b/TypeScript/13AddTrader/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/13AddTrader/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/13AddTrader/types/models/enums/Weapons.d.ts b/TypeScript/13AddTrader/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/13AddTrader/types/models/enums/Weapons.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/13AddTrader/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/13AddTrader/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/13AddTrader/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/13AddTrader/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/13AddTrader/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/13AddTrader/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/13AddTrader/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/13AddTrader/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/13AddTrader/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/13AddTrader/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/13AddTrader/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/13AddTrader/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/13AddTrader/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/13AddTrader/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/13AddTrader/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/13AddTrader/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/13AddTrader/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/13AddTrader/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/13AddTrader/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/13AddTrader/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/13AddTrader/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/13AddTrader/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/13AddTrader/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/13AddTrader/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/13AddTrader/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/13AddTrader/types/models/spt/config/IBotConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/13AddTrader/types/models/spt/config/IBotDurability.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/13AddTrader/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/13AddTrader/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/13AddTrader/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/13AddTrader/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/13AddTrader/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/13AddTrader/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/13AddTrader/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/13AddTrader/types/models/spt/config/ILootConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/13AddTrader/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/13AddTrader/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/13AddTrader/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/13AddTrader/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/13AddTrader/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/13AddTrader/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/13AddTrader/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/13AddTrader/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/13AddTrader/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/13AddTrader/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/13AddTrader/types/models/spt/controllers/IBotController.d.ts b/TypeScript/13AddTrader/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/13AddTrader/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/13AddTrader/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/13AddTrader/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/13AddTrader/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/13AddTrader/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/13AddTrader/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/13AddTrader/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/13AddTrader/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/13AddTrader/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/13AddTrader/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/13AddTrader/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/13AddTrader/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/13AddTrader/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/13AddTrader/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/13AddTrader/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/13AddTrader/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/13AddTrader/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/13AddTrader/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/13AddTrader/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/13AddTrader/types/models/spt/hideout/IHideout.d.ts b/TypeScript/13AddTrader/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/13AddTrader/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/13AddTrader/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/13AddTrader/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/13AddTrader/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/13AddTrader/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/13AddTrader/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/13AddTrader/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/13AddTrader/types/models/spt/templates/ITemplates.d.ts b/TypeScript/13AddTrader/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/13AddTrader/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/13AddTrader/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/13AddTrader/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/13AddTrader/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/13AddTrader/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/13AddTrader/types/routers/EventOutputHolder.d.ts b/TypeScript/13AddTrader/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/13AddTrader/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/13AddTrader/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/13AddTrader/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/13AddTrader/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/13AddTrader/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/13AddTrader/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/13AddTrader/types/routers/static/GameStaticRouter.d.ts b/TypeScript/13AddTrader/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/13AddTrader/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/13AddTrader/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/13AddTrader/types/servers/SaveServer.d.ts b/TypeScript/13AddTrader/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/13AddTrader/types/servers/SaveServer.d.ts +++ b/TypeScript/13AddTrader/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/13AddTrader/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/13AddTrader/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/13AddTrader/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/13AddTrader/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/13AddTrader/types/services/AirdropService.d.ts b/TypeScript/13AddTrader/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/13AddTrader/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/13AddTrader/types/services/BotEquipmentFilterService.d.ts b/TypeScript/13AddTrader/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/13AddTrader/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/13AddTrader/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/13AddTrader/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/13AddTrader/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/13AddTrader/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/13AddTrader/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/13AddTrader/types/services/BotGenerationCacheService.d.ts b/TypeScript/13AddTrader/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/13AddTrader/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/13AddTrader/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/13AddTrader/types/services/BotNameService.d.ts b/TypeScript/13AddTrader/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/13AddTrader/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/13AddTrader/types/services/BotWeaponModLimitService.d.ts b/TypeScript/13AddTrader/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/13AddTrader/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/13AddTrader/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/13AddTrader/types/services/CircleOfCultistService.d.ts b/TypeScript/13AddTrader/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/13AddTrader/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/13AddTrader/types/services/CustomLocationWaveService.d.ts b/TypeScript/13AddTrader/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/13AddTrader/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/13AddTrader/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/13AddTrader/types/services/DatabaseService.d.ts b/TypeScript/13AddTrader/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/13AddTrader/types/services/DatabaseService.d.ts +++ b/TypeScript/13AddTrader/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/13AddTrader/types/services/FenceService.d.ts b/TypeScript/13AddTrader/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/13AddTrader/types/services/FenceService.d.ts +++ b/TypeScript/13AddTrader/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/13AddTrader/types/services/InsuranceService.d.ts b/TypeScript/13AddTrader/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/13AddTrader/types/services/InsuranceService.d.ts +++ b/TypeScript/13AddTrader/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/13AddTrader/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/13AddTrader/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/13AddTrader/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/13AddTrader/types/services/LocationLifecycleService.d.ts b/TypeScript/13AddTrader/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/13AddTrader/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/13AddTrader/types/services/MailSendService.d.ts b/TypeScript/13AddTrader/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/13AddTrader/types/services/MailSendService.d.ts +++ b/TypeScript/13AddTrader/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/13AddTrader/types/services/MapMarkerService.d.ts b/TypeScript/13AddTrader/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/13AddTrader/types/services/MapMarkerService.d.ts +++ b/TypeScript/13AddTrader/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/13AddTrader/types/services/PaymentService.d.ts b/TypeScript/13AddTrader/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/13AddTrader/types/services/PaymentService.d.ts +++ b/TypeScript/13AddTrader/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/13AddTrader/types/services/PmcChatResponseService.d.ts b/TypeScript/13AddTrader/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/13AddTrader/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/13AddTrader/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/13AddTrader/types/services/ProfileFixerService.d.ts b/TypeScript/13AddTrader/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/13AddTrader/types/services/ProfileFixerService.d.ts +++ b/TypeScript/13AddTrader/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/13AddTrader/types/services/RagfairOfferService.d.ts b/TypeScript/13AddTrader/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/13AddTrader/types/services/RagfairOfferService.d.ts +++ b/TypeScript/13AddTrader/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/13AddTrader/types/services/RagfairPriceService.d.ts b/TypeScript/13AddTrader/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/13AddTrader/types/services/RagfairPriceService.d.ts +++ b/TypeScript/13AddTrader/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/13AddTrader/types/services/RagfairTaxService.d.ts b/TypeScript/13AddTrader/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/13AddTrader/types/services/RagfairTaxService.d.ts +++ b/TypeScript/13AddTrader/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/13AddTrader/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/13AddTrader/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/13AddTrader/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/13AddTrader/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/13AddTrader/types/services/RepairService.d.ts b/TypeScript/13AddTrader/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/13AddTrader/types/services/RepairService.d.ts +++ b/TypeScript/13AddTrader/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/13AddTrader/types/services/SeasonalEventService.d.ts b/TypeScript/13AddTrader/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/13AddTrader/types/services/SeasonalEventService.d.ts +++ b/TypeScript/13AddTrader/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/13AddTrader/types/services/TraderServicesService.d.ts b/TypeScript/13AddTrader/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/13AddTrader/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/13AddTrader/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/13AddTrader/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/13AddTrader/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/13AddTrader/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/13AddTrader/types/utils/HashUtil.d.ts b/TypeScript/13AddTrader/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/13AddTrader/types/utils/HashUtil.d.ts +++ b/TypeScript/13AddTrader/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/BotCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/DataCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/GameCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/InraidCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/14AfterDBLoadHook/types/callbacks/LocationCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/MatchCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/TraderCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/14AfterDBLoadHook/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/14AfterDBLoadHook/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/BotController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/BotController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/CustomizationController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/CustomizationController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/GameController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/GameController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/HideoutController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/HideoutController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/InraidController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/InraidController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/14AfterDBLoadHook/types/controllers/InsuranceController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/InsuranceController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/LocationController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/LocationController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/MatchController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/MatchController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/ProfileController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/ProfileController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/QuestController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/QuestController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/RagfairController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/RagfairController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/TradeController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/TradeController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/TraderController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/TraderController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/WeatherController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/WeatherController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/14AfterDBLoadHook/types/controllers/WishlistController.d.ts b/TypeScript/14AfterDBLoadHook/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/14AfterDBLoadHook/types/controllers/WishlistController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/14AfterDBLoadHook/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/generators/BotGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/BotGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/14AfterDBLoadHook/types/generators/BotInventoryGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/14AfterDBLoadHook/types/generators/BotLootGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/14AfterDBLoadHook/types/generators/BotWeaponGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/14AfterDBLoadHook/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/14AfterDBLoadHook/types/generators/LocationGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/14AfterDBLoadHook/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/14AfterDBLoadHook/types/generators/LocationLootGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/14AfterDBLoadHook/types/generators/LootGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/LootGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/14AfterDBLoadHook/types/generators/PlayerScavGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/14AfterDBLoadHook/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/14AfterDBLoadHook/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/14AfterDBLoadHook/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/14AfterDBLoadHook/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/14AfterDBLoadHook/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/14AfterDBLoadHook/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/14AfterDBLoadHook/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/BotHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/BotHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/DialogueHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/HandbookHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/HealthHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/HealthHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/HideoutHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/InRaidHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/InventoryHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/ItemHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/ItemHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/PresetHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/PresetHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/ProfileHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/QuestHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/QuestHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/RagfairHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/RagfairSellHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/RagfairServerHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/RepairHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/RepairHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/SecureContainerHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/TradeHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/TradeHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/TraderAssortHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/TraderHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/TraderHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/14AfterDBLoadHook/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/14AfterDBLoadHook/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/14AfterDBLoadHook/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/14AfterDBLoadHook/types/loaders/BundleLoader.d.ts b/TypeScript/14AfterDBLoadHook/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/14AfterDBLoadHook/types/loaders/BundleLoader.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/IGlobals.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocation.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocationBase.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IItem.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/14AfterDBLoadHook/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/AirdropType.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/AirdropType.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/BaseClasses.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/ConfigTypes.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/HideoutAreas.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/HideoutEventActions.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/ItemTpl.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/QuestRewardType.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/TraderServiceType.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/Weapons.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/Weapons.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/14AfterDBLoadHook/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/14AfterDBLoadHook/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/14AfterDBLoadHook/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/14AfterDBLoadHook/types/models/spt/config/IBotConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBotDurability.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILootConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/controllers/IBotController.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/hideout/IHideout.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/templates/ITemplates.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/14AfterDBLoadHook/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/14AfterDBLoadHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/14AfterDBLoadHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/14AfterDBLoadHook/types/routers/EventOutputHolder.d.ts b/TypeScript/14AfterDBLoadHook/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/14AfterDBLoadHook/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/14AfterDBLoadHook/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/14AfterDBLoadHook/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/14AfterDBLoadHook/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/14AfterDBLoadHook/types/routers/static/GameStaticRouter.d.ts b/TypeScript/14AfterDBLoadHook/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/14AfterDBLoadHook/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/14AfterDBLoadHook/types/servers/SaveServer.d.ts b/TypeScript/14AfterDBLoadHook/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/14AfterDBLoadHook/types/servers/SaveServer.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/14AfterDBLoadHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/14AfterDBLoadHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/14AfterDBLoadHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/14AfterDBLoadHook/types/services/AirdropService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/14AfterDBLoadHook/types/services/BotEquipmentFilterService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/14AfterDBLoadHook/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/14AfterDBLoadHook/types/services/BotGenerationCacheService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/14AfterDBLoadHook/types/services/BotNameService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/14AfterDBLoadHook/types/services/BotWeaponModLimitService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/14AfterDBLoadHook/types/services/CircleOfCultistService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/14AfterDBLoadHook/types/services/CustomLocationWaveService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/14AfterDBLoadHook/types/services/DatabaseService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/DatabaseService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/14AfterDBLoadHook/types/services/FenceService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/FenceService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/14AfterDBLoadHook/types/services/InsuranceService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/InsuranceService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/14AfterDBLoadHook/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/14AfterDBLoadHook/types/services/LocationLifecycleService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/14AfterDBLoadHook/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/14AfterDBLoadHook/types/services/MailSendService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/MailSendService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/14AfterDBLoadHook/types/services/MapMarkerService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/MapMarkerService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/14AfterDBLoadHook/types/services/PaymentService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/PaymentService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/14AfterDBLoadHook/types/services/PmcChatResponseService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/14AfterDBLoadHook/types/services/ProfileFixerService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/ProfileFixerService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/14AfterDBLoadHook/types/services/RagfairOfferService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/RagfairOfferService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/14AfterDBLoadHook/types/services/RagfairPriceService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/RagfairPriceService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/14AfterDBLoadHook/types/services/RagfairTaxService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/RagfairTaxService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/14AfterDBLoadHook/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/14AfterDBLoadHook/types/services/RepairService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/RepairService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/14AfterDBLoadHook/types/services/SeasonalEventService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/14AfterDBLoadHook/types/services/SeasonalEventService.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/14AfterDBLoadHook/types/services/TraderServicesService.d.ts b/TypeScript/14AfterDBLoadHook/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/14AfterDBLoadHook/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/14AfterDBLoadHook/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/14AfterDBLoadHook/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/14AfterDBLoadHook/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/14AfterDBLoadHook/types/utils/HashUtil.d.ts b/TypeScript/14AfterDBLoadHook/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/14AfterDBLoadHook/types/utils/HashUtil.d.ts +++ b/TypeScript/14AfterDBLoadHook/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/15HttpListenerExample/types/callbacks/BotCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/15HttpListenerExample/types/callbacks/DataCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/15HttpListenerExample/types/callbacks/GameCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/15HttpListenerExample/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/15HttpListenerExample/types/callbacks/InraidCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/15HttpListenerExample/types/callbacks/LocationCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/15HttpListenerExample/types/callbacks/MatchCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/15HttpListenerExample/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/15HttpListenerExample/types/callbacks/TraderCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/15HttpListenerExample/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/15HttpListenerExample/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/15HttpListenerExample/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/15HttpListenerExample/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/15HttpListenerExample/types/controllers/BotController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/BotController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/15HttpListenerExample/types/controllers/CustomizationController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/CustomizationController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/15HttpListenerExample/types/controllers/GameController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/GameController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/15HttpListenerExample/types/controllers/HideoutController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/HideoutController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/15HttpListenerExample/types/controllers/InraidController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/InraidController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/15HttpListenerExample/types/controllers/InsuranceController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/InsuranceController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/15HttpListenerExample/types/controllers/LocationController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/LocationController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/15HttpListenerExample/types/controllers/MatchController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/MatchController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/15HttpListenerExample/types/controllers/ProfileController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/ProfileController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/15HttpListenerExample/types/controllers/QuestController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/QuestController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/15HttpListenerExample/types/controllers/RagfairController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/RagfairController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/15HttpListenerExample/types/controllers/TradeController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/TradeController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/15HttpListenerExample/types/controllers/TraderController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/TraderController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/15HttpListenerExample/types/controllers/WeatherController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/WeatherController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/15HttpListenerExample/types/controllers/WishlistController.d.ts b/TypeScript/15HttpListenerExample/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/15HttpListenerExample/types/controllers/WishlistController.d.ts +++ b/TypeScript/15HttpListenerExample/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/15HttpListenerExample/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/15HttpListenerExample/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/15HttpListenerExample/types/generators/BotGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/15HttpListenerExample/types/generators/BotGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/15HttpListenerExample/types/generators/BotInventoryGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/15HttpListenerExample/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/15HttpListenerExample/types/generators/BotLootGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/15HttpListenerExample/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/15HttpListenerExample/types/generators/BotWeaponGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/15HttpListenerExample/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/15HttpListenerExample/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/15HttpListenerExample/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/15HttpListenerExample/types/generators/LocationGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/15HttpListenerExample/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/15HttpListenerExample/types/generators/LocationLootGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/15HttpListenerExample/types/generators/LootGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/15HttpListenerExample/types/generators/LootGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/15HttpListenerExample/types/generators/PlayerScavGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/15HttpListenerExample/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/15HttpListenerExample/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/15HttpListenerExample/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/15HttpListenerExample/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/15HttpListenerExample/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/15HttpListenerExample/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/15HttpListenerExample/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/15HttpListenerExample/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/15HttpListenerExample/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/15HttpListenerExample/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/15HttpListenerExample/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/15HttpListenerExample/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/15HttpListenerExample/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/15HttpListenerExample/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/15HttpListenerExample/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/15HttpListenerExample/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/15HttpListenerExample/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/BotHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/BotHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/15HttpListenerExample/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/15HttpListenerExample/types/helpers/DialogueHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/15HttpListenerExample/types/helpers/HandbookHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/15HttpListenerExample/types/helpers/HealthHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/HealthHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/15HttpListenerExample/types/helpers/HideoutHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/InRaidHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/InventoryHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/15HttpListenerExample/types/helpers/ItemHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/ItemHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/PresetHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/PresetHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/15HttpListenerExample/types/helpers/ProfileHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/QuestHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/QuestHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/15HttpListenerExample/types/helpers/RagfairHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/15HttpListenerExample/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/RagfairSellHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/RagfairServerHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/RepairHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/RepairHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/15HttpListenerExample/types/helpers/SecureContainerHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/TradeHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/TradeHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/15HttpListenerExample/types/helpers/TraderAssortHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/15HttpListenerExample/types/helpers/TraderHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/TraderHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/15HttpListenerExample/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/15HttpListenerExample/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/15HttpListenerExample/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/15HttpListenerExample/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/15HttpListenerExample/types/loaders/BundleLoader.d.ts b/TypeScript/15HttpListenerExample/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/15HttpListenerExample/types/loaders/BundleLoader.d.ts +++ b/TypeScript/15HttpListenerExample/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/IGlobals.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/ILocation.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/ILocationBase.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IItem.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/15HttpListenerExample/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/15HttpListenerExample/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/15HttpListenerExample/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/15HttpListenerExample/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/15HttpListenerExample/types/models/enums/AirdropType.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/AirdropType.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/15HttpListenerExample/types/models/enums/BaseClasses.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/15HttpListenerExample/types/models/enums/ConfigTypes.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/15HttpListenerExample/types/models/enums/HideoutAreas.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/15HttpListenerExample/types/models/enums/HideoutEventActions.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/15HttpListenerExample/types/models/enums/ItemTpl.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/15HttpListenerExample/types/models/enums/QuestRewardType.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/15HttpListenerExample/types/models/enums/TraderServiceType.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/15HttpListenerExample/types/models/enums/Weapons.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/Weapons.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/15HttpListenerExample/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/15HttpListenerExample/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/15HttpListenerExample/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/15HttpListenerExample/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/15HttpListenerExample/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/15HttpListenerExample/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/15HttpListenerExample/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/15HttpListenerExample/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/15HttpListenerExample/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/15HttpListenerExample/types/models/spt/config/IBotConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IBotDurability.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/ILootConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/15HttpListenerExample/types/models/spt/controllers/IBotController.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/15HttpListenerExample/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/hideout/IHideout.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/15HttpListenerExample/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/templates/ITemplates.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/15HttpListenerExample/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/15HttpListenerExample/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/15HttpListenerExample/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/15HttpListenerExample/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/15HttpListenerExample/types/routers/EventOutputHolder.d.ts b/TypeScript/15HttpListenerExample/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/15HttpListenerExample/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/15HttpListenerExample/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/15HttpListenerExample/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/15HttpListenerExample/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/15HttpListenerExample/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/15HttpListenerExample/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/15HttpListenerExample/types/routers/static/GameStaticRouter.d.ts b/TypeScript/15HttpListenerExample/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/15HttpListenerExample/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/15HttpListenerExample/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/15HttpListenerExample/types/servers/SaveServer.d.ts b/TypeScript/15HttpListenerExample/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/15HttpListenerExample/types/servers/SaveServer.d.ts +++ b/TypeScript/15HttpListenerExample/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/15HttpListenerExample/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/15HttpListenerExample/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/15HttpListenerExample/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/15HttpListenerExample/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/15HttpListenerExample/types/services/AirdropService.d.ts b/TypeScript/15HttpListenerExample/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/15HttpListenerExample/types/services/BotEquipmentFilterService.d.ts b/TypeScript/15HttpListenerExample/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/15HttpListenerExample/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/15HttpListenerExample/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/15HttpListenerExample/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/15HttpListenerExample/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/15HttpListenerExample/types/services/BotGenerationCacheService.d.ts b/TypeScript/15HttpListenerExample/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/15HttpListenerExample/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/15HttpListenerExample/types/services/BotNameService.d.ts b/TypeScript/15HttpListenerExample/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/15HttpListenerExample/types/services/BotWeaponModLimitService.d.ts b/TypeScript/15HttpListenerExample/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/15HttpListenerExample/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/15HttpListenerExample/types/services/CircleOfCultistService.d.ts b/TypeScript/15HttpListenerExample/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/15HttpListenerExample/types/services/CustomLocationWaveService.d.ts b/TypeScript/15HttpListenerExample/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/15HttpListenerExample/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/15HttpListenerExample/types/services/DatabaseService.d.ts b/TypeScript/15HttpListenerExample/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/15HttpListenerExample/types/services/DatabaseService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/15HttpListenerExample/types/services/FenceService.d.ts b/TypeScript/15HttpListenerExample/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/15HttpListenerExample/types/services/FenceService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/15HttpListenerExample/types/services/InsuranceService.d.ts b/TypeScript/15HttpListenerExample/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/15HttpListenerExample/types/services/InsuranceService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/15HttpListenerExample/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/15HttpListenerExample/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/15HttpListenerExample/types/services/LocationLifecycleService.d.ts b/TypeScript/15HttpListenerExample/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/15HttpListenerExample/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/15HttpListenerExample/types/services/MailSendService.d.ts b/TypeScript/15HttpListenerExample/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/15HttpListenerExample/types/services/MailSendService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/15HttpListenerExample/types/services/MapMarkerService.d.ts b/TypeScript/15HttpListenerExample/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/15HttpListenerExample/types/services/MapMarkerService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/15HttpListenerExample/types/services/PaymentService.d.ts b/TypeScript/15HttpListenerExample/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/15HttpListenerExample/types/services/PaymentService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/15HttpListenerExample/types/services/PmcChatResponseService.d.ts b/TypeScript/15HttpListenerExample/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/15HttpListenerExample/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/15HttpListenerExample/types/services/ProfileFixerService.d.ts b/TypeScript/15HttpListenerExample/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/15HttpListenerExample/types/services/ProfileFixerService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/15HttpListenerExample/types/services/RagfairOfferService.d.ts b/TypeScript/15HttpListenerExample/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/15HttpListenerExample/types/services/RagfairOfferService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/15HttpListenerExample/types/services/RagfairPriceService.d.ts b/TypeScript/15HttpListenerExample/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/15HttpListenerExample/types/services/RagfairPriceService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/15HttpListenerExample/types/services/RagfairTaxService.d.ts b/TypeScript/15HttpListenerExample/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/15HttpListenerExample/types/services/RagfairTaxService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/15HttpListenerExample/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/15HttpListenerExample/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/15HttpListenerExample/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/15HttpListenerExample/types/services/RepairService.d.ts b/TypeScript/15HttpListenerExample/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/15HttpListenerExample/types/services/RepairService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/15HttpListenerExample/types/services/SeasonalEventService.d.ts b/TypeScript/15HttpListenerExample/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/15HttpListenerExample/types/services/SeasonalEventService.d.ts +++ b/TypeScript/15HttpListenerExample/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/15HttpListenerExample/types/services/TraderServicesService.d.ts b/TypeScript/15HttpListenerExample/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/15HttpListenerExample/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/15HttpListenerExample/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/15HttpListenerExample/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/15HttpListenerExample/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/15HttpListenerExample/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/15HttpListenerExample/types/utils/HashUtil.d.ts b/TypeScript/15HttpListenerExample/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/15HttpListenerExample/types/utils/HashUtil.d.ts +++ b/TypeScript/15HttpListenerExample/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/16ImporterUtil/types/callbacks/BotCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/16ImporterUtil/types/callbacks/DataCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/16ImporterUtil/types/callbacks/GameCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/16ImporterUtil/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/16ImporterUtil/types/callbacks/InraidCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/16ImporterUtil/types/callbacks/LocationCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/16ImporterUtil/types/callbacks/MatchCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/16ImporterUtil/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/16ImporterUtil/types/callbacks/TraderCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/16ImporterUtil/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/16ImporterUtil/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/16ImporterUtil/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/16ImporterUtil/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/16ImporterUtil/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/16ImporterUtil/types/controllers/BotController.d.ts b/TypeScript/16ImporterUtil/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/16ImporterUtil/types/controllers/BotController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/16ImporterUtil/types/controllers/CustomizationController.d.ts b/TypeScript/16ImporterUtil/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/16ImporterUtil/types/controllers/CustomizationController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/16ImporterUtil/types/controllers/GameController.d.ts b/TypeScript/16ImporterUtil/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/16ImporterUtil/types/controllers/GameController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/16ImporterUtil/types/controllers/HideoutController.d.ts b/TypeScript/16ImporterUtil/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/16ImporterUtil/types/controllers/HideoutController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/16ImporterUtil/types/controllers/InraidController.d.ts b/TypeScript/16ImporterUtil/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/16ImporterUtil/types/controllers/InraidController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/16ImporterUtil/types/controllers/InsuranceController.d.ts b/TypeScript/16ImporterUtil/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/16ImporterUtil/types/controllers/InsuranceController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/16ImporterUtil/types/controllers/LocationController.d.ts b/TypeScript/16ImporterUtil/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/16ImporterUtil/types/controllers/LocationController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/16ImporterUtil/types/controllers/MatchController.d.ts b/TypeScript/16ImporterUtil/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/16ImporterUtil/types/controllers/MatchController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/16ImporterUtil/types/controllers/ProfileController.d.ts b/TypeScript/16ImporterUtil/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/16ImporterUtil/types/controllers/ProfileController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/16ImporterUtil/types/controllers/QuestController.d.ts b/TypeScript/16ImporterUtil/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/16ImporterUtil/types/controllers/QuestController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/16ImporterUtil/types/controllers/RagfairController.d.ts b/TypeScript/16ImporterUtil/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/16ImporterUtil/types/controllers/RagfairController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/16ImporterUtil/types/controllers/TradeController.d.ts b/TypeScript/16ImporterUtil/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/16ImporterUtil/types/controllers/TradeController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/16ImporterUtil/types/controllers/TraderController.d.ts b/TypeScript/16ImporterUtil/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/16ImporterUtil/types/controllers/TraderController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/16ImporterUtil/types/controllers/WeatherController.d.ts b/TypeScript/16ImporterUtil/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/16ImporterUtil/types/controllers/WeatherController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/16ImporterUtil/types/controllers/WishlistController.d.ts b/TypeScript/16ImporterUtil/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/16ImporterUtil/types/controllers/WishlistController.d.ts +++ b/TypeScript/16ImporterUtil/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/16ImporterUtil/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/16ImporterUtil/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/16ImporterUtil/types/generators/BotGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/16ImporterUtil/types/generators/BotGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/16ImporterUtil/types/generators/BotInventoryGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/16ImporterUtil/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/16ImporterUtil/types/generators/BotLootGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/16ImporterUtil/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/16ImporterUtil/types/generators/BotWeaponGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/16ImporterUtil/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/16ImporterUtil/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/16ImporterUtil/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/16ImporterUtil/types/generators/LocationGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/16ImporterUtil/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/16ImporterUtil/types/generators/LocationLootGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/16ImporterUtil/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/16ImporterUtil/types/generators/LootGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/16ImporterUtil/types/generators/LootGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/16ImporterUtil/types/generators/PlayerScavGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/16ImporterUtil/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/16ImporterUtil/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/16ImporterUtil/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/16ImporterUtil/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/16ImporterUtil/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/16ImporterUtil/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/16ImporterUtil/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/16ImporterUtil/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/16ImporterUtil/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/16ImporterUtil/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/16ImporterUtil/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/16ImporterUtil/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/16ImporterUtil/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/16ImporterUtil/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/16ImporterUtil/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/16ImporterUtil/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/16ImporterUtil/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/16ImporterUtil/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/16ImporterUtil/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/16ImporterUtil/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/16ImporterUtil/types/helpers/BotHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/16ImporterUtil/types/helpers/BotHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/16ImporterUtil/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/16ImporterUtil/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/16ImporterUtil/types/helpers/DialogueHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/16ImporterUtil/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/16ImporterUtil/types/helpers/HandbookHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/16ImporterUtil/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/16ImporterUtil/types/helpers/HealthHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/16ImporterUtil/types/helpers/HealthHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/16ImporterUtil/types/helpers/HideoutHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/16ImporterUtil/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/16ImporterUtil/types/helpers/InRaidHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/16ImporterUtil/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/16ImporterUtil/types/helpers/InventoryHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/16ImporterUtil/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/16ImporterUtil/types/helpers/ItemHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/16ImporterUtil/types/helpers/ItemHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/16ImporterUtil/types/helpers/PresetHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/16ImporterUtil/types/helpers/PresetHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/16ImporterUtil/types/helpers/ProfileHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/16ImporterUtil/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/16ImporterUtil/types/helpers/QuestHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/16ImporterUtil/types/helpers/QuestHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/16ImporterUtil/types/helpers/RagfairHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/16ImporterUtil/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/16ImporterUtil/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/16ImporterUtil/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/16ImporterUtil/types/helpers/RagfairSellHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/16ImporterUtil/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/16ImporterUtil/types/helpers/RagfairServerHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/16ImporterUtil/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/16ImporterUtil/types/helpers/RepairHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/16ImporterUtil/types/helpers/RepairHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/16ImporterUtil/types/helpers/SecureContainerHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/16ImporterUtil/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/16ImporterUtil/types/helpers/TradeHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/16ImporterUtil/types/helpers/TradeHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/16ImporterUtil/types/helpers/TraderAssortHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/16ImporterUtil/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/16ImporterUtil/types/helpers/TraderHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/16ImporterUtil/types/helpers/TraderHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/16ImporterUtil/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/16ImporterUtil/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/16ImporterUtil/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/16ImporterUtil/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/16ImporterUtil/types/loaders/BundleLoader.d.ts b/TypeScript/16ImporterUtil/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/16ImporterUtil/types/loaders/BundleLoader.d.ts +++ b/TypeScript/16ImporterUtil/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/IGlobals.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/ILocation.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/ILocationBase.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IItem.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/16ImporterUtil/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/16ImporterUtil/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/16ImporterUtil/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/16ImporterUtil/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/16ImporterUtil/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/16ImporterUtil/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/16ImporterUtil/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/16ImporterUtil/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/16ImporterUtil/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/16ImporterUtil/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/16ImporterUtil/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/16ImporterUtil/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/16ImporterUtil/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/16ImporterUtil/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/16ImporterUtil/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/16ImporterUtil/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/16ImporterUtil/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/16ImporterUtil/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/16ImporterUtil/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/16ImporterUtil/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/16ImporterUtil/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/16ImporterUtil/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/16ImporterUtil/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/16ImporterUtil/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/16ImporterUtil/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/16ImporterUtil/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/16ImporterUtil/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/16ImporterUtil/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/16ImporterUtil/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/16ImporterUtil/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/16ImporterUtil/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/16ImporterUtil/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/16ImporterUtil/types/models/enums/AirdropType.d.ts b/TypeScript/16ImporterUtil/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/AirdropType.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/16ImporterUtil/types/models/enums/BaseClasses.d.ts b/TypeScript/16ImporterUtil/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/16ImporterUtil/types/models/enums/ConfigTypes.d.ts b/TypeScript/16ImporterUtil/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/16ImporterUtil/types/models/enums/HideoutAreas.d.ts b/TypeScript/16ImporterUtil/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/16ImporterUtil/types/models/enums/HideoutEventActions.d.ts b/TypeScript/16ImporterUtil/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/16ImporterUtil/types/models/enums/ItemTpl.d.ts b/TypeScript/16ImporterUtil/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/16ImporterUtil/types/models/enums/QuestRewardType.d.ts b/TypeScript/16ImporterUtil/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/16ImporterUtil/types/models/enums/TraderServiceType.d.ts b/TypeScript/16ImporterUtil/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/16ImporterUtil/types/models/enums/Weapons.d.ts b/TypeScript/16ImporterUtil/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/Weapons.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/16ImporterUtil/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/16ImporterUtil/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/16ImporterUtil/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/16ImporterUtil/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/16ImporterUtil/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/16ImporterUtil/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/16ImporterUtil/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/16ImporterUtil/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/16ImporterUtil/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/16ImporterUtil/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/16ImporterUtil/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/16ImporterUtil/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/16ImporterUtil/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/16ImporterUtil/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/16ImporterUtil/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/16ImporterUtil/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/16ImporterUtil/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/16ImporterUtil/types/models/spt/config/IBotConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IBotDurability.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/ILootConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/16ImporterUtil/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/16ImporterUtil/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/16ImporterUtil/types/models/spt/controllers/IBotController.d.ts b/TypeScript/16ImporterUtil/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/16ImporterUtil/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/16ImporterUtil/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/16ImporterUtil/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/16ImporterUtil/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/16ImporterUtil/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/16ImporterUtil/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/16ImporterUtil/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/16ImporterUtil/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/hideout/IHideout.d.ts b/TypeScript/16ImporterUtil/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/16ImporterUtil/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/16ImporterUtil/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/16ImporterUtil/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/templates/ITemplates.d.ts b/TypeScript/16ImporterUtil/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/16ImporterUtil/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/16ImporterUtil/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/16ImporterUtil/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/16ImporterUtil/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/16ImporterUtil/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/16ImporterUtil/types/routers/EventOutputHolder.d.ts b/TypeScript/16ImporterUtil/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/16ImporterUtil/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/16ImporterUtil/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/16ImporterUtil/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/16ImporterUtil/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/16ImporterUtil/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/16ImporterUtil/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/16ImporterUtil/types/routers/static/GameStaticRouter.d.ts b/TypeScript/16ImporterUtil/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/16ImporterUtil/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/16ImporterUtil/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/16ImporterUtil/types/servers/SaveServer.d.ts b/TypeScript/16ImporterUtil/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/16ImporterUtil/types/servers/SaveServer.d.ts +++ b/TypeScript/16ImporterUtil/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/16ImporterUtil/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/16ImporterUtil/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/16ImporterUtil/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/16ImporterUtil/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/16ImporterUtil/types/services/AirdropService.d.ts b/TypeScript/16ImporterUtil/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/16ImporterUtil/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/16ImporterUtil/types/services/BotEquipmentFilterService.d.ts b/TypeScript/16ImporterUtil/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/16ImporterUtil/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/16ImporterUtil/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/16ImporterUtil/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/16ImporterUtil/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/16ImporterUtil/types/services/BotGenerationCacheService.d.ts b/TypeScript/16ImporterUtil/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/16ImporterUtil/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/16ImporterUtil/types/services/BotNameService.d.ts b/TypeScript/16ImporterUtil/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/16ImporterUtil/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/16ImporterUtil/types/services/BotWeaponModLimitService.d.ts b/TypeScript/16ImporterUtil/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/16ImporterUtil/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/16ImporterUtil/types/services/CircleOfCultistService.d.ts b/TypeScript/16ImporterUtil/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/16ImporterUtil/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/16ImporterUtil/types/services/CustomLocationWaveService.d.ts b/TypeScript/16ImporterUtil/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/16ImporterUtil/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/16ImporterUtil/types/services/DatabaseService.d.ts b/TypeScript/16ImporterUtil/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/16ImporterUtil/types/services/DatabaseService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/16ImporterUtil/types/services/FenceService.d.ts b/TypeScript/16ImporterUtil/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/16ImporterUtil/types/services/FenceService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/16ImporterUtil/types/services/InsuranceService.d.ts b/TypeScript/16ImporterUtil/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/16ImporterUtil/types/services/InsuranceService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/16ImporterUtil/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/16ImporterUtil/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/16ImporterUtil/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/16ImporterUtil/types/services/LocationLifecycleService.d.ts b/TypeScript/16ImporterUtil/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/16ImporterUtil/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/16ImporterUtil/types/services/MailSendService.d.ts b/TypeScript/16ImporterUtil/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/16ImporterUtil/types/services/MailSendService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/16ImporterUtil/types/services/MapMarkerService.d.ts b/TypeScript/16ImporterUtil/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/16ImporterUtil/types/services/MapMarkerService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/16ImporterUtil/types/services/PaymentService.d.ts b/TypeScript/16ImporterUtil/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/16ImporterUtil/types/services/PaymentService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/16ImporterUtil/types/services/PmcChatResponseService.d.ts b/TypeScript/16ImporterUtil/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/16ImporterUtil/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/16ImporterUtil/types/services/ProfileFixerService.d.ts b/TypeScript/16ImporterUtil/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/16ImporterUtil/types/services/ProfileFixerService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/16ImporterUtil/types/services/RagfairOfferService.d.ts b/TypeScript/16ImporterUtil/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/16ImporterUtil/types/services/RagfairOfferService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/16ImporterUtil/types/services/RagfairPriceService.d.ts b/TypeScript/16ImporterUtil/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/16ImporterUtil/types/services/RagfairPriceService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/16ImporterUtil/types/services/RagfairTaxService.d.ts b/TypeScript/16ImporterUtil/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/16ImporterUtil/types/services/RagfairTaxService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/16ImporterUtil/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/16ImporterUtil/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/16ImporterUtil/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/16ImporterUtil/types/services/RepairService.d.ts b/TypeScript/16ImporterUtil/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/16ImporterUtil/types/services/RepairService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/16ImporterUtil/types/services/SeasonalEventService.d.ts b/TypeScript/16ImporterUtil/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/16ImporterUtil/types/services/SeasonalEventService.d.ts +++ b/TypeScript/16ImporterUtil/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/16ImporterUtil/types/services/TraderServicesService.d.ts b/TypeScript/16ImporterUtil/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/16ImporterUtil/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/16ImporterUtil/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/16ImporterUtil/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/16ImporterUtil/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/16ImporterUtil/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/16ImporterUtil/types/utils/HashUtil.d.ts b/TypeScript/16ImporterUtil/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/16ImporterUtil/types/utils/HashUtil.d.ts +++ b/TypeScript/16ImporterUtil/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/BotCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/DataCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/GameCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/InraidCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/17AsyncImporterWithDependency1/types/callbacks/LocationCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/MatchCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/TraderCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/BotController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/BotController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/CustomizationController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/CustomizationController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/GameController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/GameController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/HideoutController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/HideoutController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/InraidController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/InraidController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/17AsyncImporterWithDependency1/types/controllers/InsuranceController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/InsuranceController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/LocationController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/LocationController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/MatchController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/MatchController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/ProfileController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/ProfileController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/QuestController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/QuestController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/RagfairController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/RagfairController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/TradeController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/TradeController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/TraderController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/TraderController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/WeatherController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/WeatherController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/controllers/WishlistController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/controllers/WishlistController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotInventoryGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotLootGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotWeaponGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/LocationGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/LocationLootGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/LootGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/LootGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/PlayerScavGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/17AsyncImporterWithDependency1/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/17AsyncImporterWithDependency1/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/17AsyncImporterWithDependency1/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/DialogueHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/HandbookHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/HealthHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/HealthHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/HideoutHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/InRaidHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/InventoryHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/ItemHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/ItemHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/PresetHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/PresetHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/ProfileHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/QuestHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/QuestHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairSellHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairServerHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RepairHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/RepairHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/SecureContainerHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/TradeHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/TradeHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/TraderAssortHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/TraderHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/TraderHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/17AsyncImporterWithDependency1/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/17AsyncImporterWithDependency1/types/loaders/BundleLoader.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/loaders/BundleLoader.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/IGlobals.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocation.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocationBase.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IItem.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/AirdropType.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/AirdropType.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/BaseClasses.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/ConfigTypes.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/HideoutAreas.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/HideoutEventActions.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/ItemTpl.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/QuestRewardType.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/TraderServiceType.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/Weapons.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/Weapons.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/17AsyncImporterWithDependency1/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/17AsyncImporterWithDependency1/types/models/spt/config/IBotConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBotDurability.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILootConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/controllers/IBotController.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/hideout/IHideout.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/templates/ITemplates.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/routers/EventOutputHolder.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/routers/static/GameStaticRouter.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/servers/SaveServer.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/servers/SaveServer.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/17AsyncImporterWithDependency1/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/AirdropService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/BotEquipmentFilterService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/BotGenerationCacheService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/BotNameService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/BotWeaponModLimitService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/CircleOfCultistService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/CustomLocationWaveService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/DatabaseService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/DatabaseService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/FenceService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/FenceService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/InsuranceService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/InsuranceService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/LocationLifecycleService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/MailSendService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/MailSendService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/MapMarkerService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/MapMarkerService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/PaymentService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/PaymentService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/PmcChatResponseService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/ProfileFixerService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/ProfileFixerService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairOfferService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairOfferService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairPriceService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairPriceService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairTaxService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairTaxService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/RepairService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/RepairService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/SeasonalEventService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/SeasonalEventService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/17AsyncImporterWithDependency1/types/services/TraderServicesService.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/17AsyncImporterWithDependency1/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/17AsyncImporterWithDependency1/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/17AsyncImporterWithDependency1/types/utils/HashUtil.d.ts b/TypeScript/17AsyncImporterWithDependency1/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/17AsyncImporterWithDependency1/types/utils/HashUtil.d.ts +++ b/TypeScript/17AsyncImporterWithDependency1/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/BotCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/DataCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/GameCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/InraidCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/17AsyncImporterWithDependency2/types/callbacks/LocationCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/MatchCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/TraderCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/BotController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/BotController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/CustomizationController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/CustomizationController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/GameController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/GameController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/HideoutController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/HideoutController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/InraidController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/InraidController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/17AsyncImporterWithDependency2/types/controllers/InsuranceController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/InsuranceController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/LocationController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/LocationController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/MatchController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/MatchController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/ProfileController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/ProfileController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/QuestController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/QuestController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/RagfairController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/RagfairController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/TradeController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/TradeController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/TraderController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/TraderController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/WeatherController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/WeatherController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/controllers/WishlistController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/controllers/WishlistController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotInventoryGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotLootGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotWeaponGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/LocationGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/LocationLootGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/LootGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/LootGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/PlayerScavGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/17AsyncImporterWithDependency2/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/17AsyncImporterWithDependency2/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/17AsyncImporterWithDependency2/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/DialogueHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/HandbookHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/HealthHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/HealthHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/HideoutHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/InRaidHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/InventoryHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/ItemHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/ItemHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/PresetHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/PresetHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/ProfileHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/QuestHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/QuestHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairSellHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairServerHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RepairHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/RepairHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/SecureContainerHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/TradeHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/TradeHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/TraderAssortHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/TraderHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/TraderHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/17AsyncImporterWithDependency2/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/17AsyncImporterWithDependency2/types/loaders/BundleLoader.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/loaders/BundleLoader.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/IGlobals.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocation.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocationBase.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IItem.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/AirdropType.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/AirdropType.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/BaseClasses.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/ConfigTypes.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/HideoutAreas.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/HideoutEventActions.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/ItemTpl.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/QuestRewardType.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/TraderServiceType.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/Weapons.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/Weapons.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/17AsyncImporterWithDependency2/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/17AsyncImporterWithDependency2/types/models/spt/config/IBotConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBotDurability.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILootConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/controllers/IBotController.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/hideout/IHideout.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/templates/ITemplates.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/routers/EventOutputHolder.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/routers/static/GameStaticRouter.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/servers/SaveServer.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/servers/SaveServer.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/17AsyncImporterWithDependency2/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/AirdropService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/BotEquipmentFilterService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/BotGenerationCacheService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/BotNameService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/BotWeaponModLimitService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/CircleOfCultistService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/CustomLocationWaveService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/DatabaseService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/DatabaseService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/FenceService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/FenceService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/InsuranceService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/InsuranceService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/LocationLifecycleService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/MailSendService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/MailSendService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/MapMarkerService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/MapMarkerService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/PaymentService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/PaymentService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/PmcChatResponseService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/ProfileFixerService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/ProfileFixerService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairOfferService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairOfferService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairPriceService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairPriceService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairTaxService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairTaxService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/RepairService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/RepairService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/SeasonalEventService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/SeasonalEventService.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/17AsyncImporterWithDependency2/types/services/TraderServicesService.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/17AsyncImporterWithDependency2/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/17AsyncImporterWithDependency2/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/17AsyncImporterWithDependency2/types/utils/HashUtil.d.ts b/TypeScript/17AsyncImporterWithDependency2/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/17AsyncImporterWithDependency2/types/utils/HashUtil.d.ts +++ b/TypeScript/17AsyncImporterWithDependency2/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/BotCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/DataCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/GameCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/InraidCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/18.1CustomItemServiceLootBox/types/callbacks/LocationCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/MatchCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/TraderCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/BotController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/BotController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/CustomizationController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/CustomizationController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/GameController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/GameController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/HideoutController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/HideoutController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/InraidController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/InraidController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/18.1CustomItemServiceLootBox/types/controllers/InsuranceController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/InsuranceController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/LocationController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/LocationController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/MatchController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/MatchController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/ProfileController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/ProfileController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/QuestController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/QuestController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/RagfairController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/RagfairController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/TradeController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/TradeController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/TraderController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/TraderController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/WeatherController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/WeatherController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/WishlistController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/controllers/WishlistController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotInventoryGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotLootGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotWeaponGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/LocationGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/LocationLootGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/LootGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/LootGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/PlayerScavGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/18.1CustomItemServiceLootBox/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/18.1CustomItemServiceLootBox/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/DialogueHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HandbookHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HealthHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HealthHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HideoutHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/InRaidHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/InventoryHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/ItemHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/ItemHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/PresetHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/PresetHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/ProfileHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/QuestHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/QuestHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairSellHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairServerHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RepairHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RepairHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/SecureContainerHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TradeHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TradeHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TraderAssortHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TraderHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TraderHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/loaders/BundleLoader.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/loaders/BundleLoader.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/IGlobals.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocation.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocationBase.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IItem.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/AirdropType.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/AirdropType.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/BaseClasses.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/ConfigTypes.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/HideoutAreas.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/HideoutEventActions.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/ItemTpl.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/QuestRewardType.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/TraderServiceType.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/Weapons.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/Weapons.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/18.1CustomItemServiceLootBox/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/18.1CustomItemServiceLootBox/types/models/spt/config/IBotConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBotDurability.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILootConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/controllers/IBotController.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/hideout/IHideout.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/templates/ITemplates.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/routers/EventOutputHolder.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/routers/static/GameStaticRouter.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/servers/SaveServer.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/servers/SaveServer.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/AirdropService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotEquipmentFilterService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotGenerationCacheService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotNameService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotWeaponModLimitService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/CircleOfCultistService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/CustomLocationWaveService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/DatabaseService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/DatabaseService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/FenceService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/FenceService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/InsuranceService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/InsuranceService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/LocationLifecycleService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/MailSendService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/MailSendService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/MapMarkerService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/MapMarkerService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/PaymentService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/PaymentService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/PmcChatResponseService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/ProfileFixerService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/ProfileFixerService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairOfferService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairOfferService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairPriceService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairPriceService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairTaxService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairTaxService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/RepairService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/RepairService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/SeasonalEventService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/SeasonalEventService.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/services/TraderServicesService.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/18.1CustomItemServiceLootBox/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/18.1CustomItemServiceLootBox/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/18.1CustomItemServiceLootBox/types/utils/HashUtil.d.ts b/TypeScript/18.1CustomItemServiceLootBox/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/18.1CustomItemServiceLootBox/types/utils/HashUtil.d.ts +++ b/TypeScript/18.1CustomItemServiceLootBox/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/18CustomItemService/types/callbacks/BotCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/18CustomItemService/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/18CustomItemService/types/callbacks/DataCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/18CustomItemService/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/18CustomItemService/types/callbacks/GameCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/18CustomItemService/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/18CustomItemService/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/18CustomItemService/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/18CustomItemService/types/callbacks/InraidCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/18CustomItemService/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/18CustomItemService/types/callbacks/LocationCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/18CustomItemService/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/18CustomItemService/types/callbacks/MatchCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/18CustomItemService/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/18CustomItemService/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/18CustomItemService/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/18CustomItemService/types/callbacks/TraderCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/18CustomItemService/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/18CustomItemService/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/18CustomItemService/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/18CustomItemService/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/18CustomItemService/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/18CustomItemService/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/18CustomItemService/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/18CustomItemService/types/controllers/BotController.d.ts b/TypeScript/18CustomItemService/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/18CustomItemService/types/controllers/BotController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/18CustomItemService/types/controllers/CustomizationController.d.ts b/TypeScript/18CustomItemService/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/18CustomItemService/types/controllers/CustomizationController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/18CustomItemService/types/controllers/GameController.d.ts b/TypeScript/18CustomItemService/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/18CustomItemService/types/controllers/GameController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/18CustomItemService/types/controllers/HideoutController.d.ts b/TypeScript/18CustomItemService/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/18CustomItemService/types/controllers/HideoutController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/18CustomItemService/types/controllers/InraidController.d.ts b/TypeScript/18CustomItemService/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/18CustomItemService/types/controllers/InraidController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/18CustomItemService/types/controllers/InsuranceController.d.ts b/TypeScript/18CustomItemService/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/18CustomItemService/types/controllers/InsuranceController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/18CustomItemService/types/controllers/LocationController.d.ts b/TypeScript/18CustomItemService/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/18CustomItemService/types/controllers/LocationController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/18CustomItemService/types/controllers/MatchController.d.ts b/TypeScript/18CustomItemService/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/18CustomItemService/types/controllers/MatchController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/18CustomItemService/types/controllers/ProfileController.d.ts b/TypeScript/18CustomItemService/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/18CustomItemService/types/controllers/ProfileController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/18CustomItemService/types/controllers/QuestController.d.ts b/TypeScript/18CustomItemService/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/18CustomItemService/types/controllers/QuestController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/18CustomItemService/types/controllers/RagfairController.d.ts b/TypeScript/18CustomItemService/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/18CustomItemService/types/controllers/RagfairController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/18CustomItemService/types/controllers/TradeController.d.ts b/TypeScript/18CustomItemService/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/18CustomItemService/types/controllers/TradeController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/18CustomItemService/types/controllers/TraderController.d.ts b/TypeScript/18CustomItemService/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/18CustomItemService/types/controllers/TraderController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/18CustomItemService/types/controllers/WeatherController.d.ts b/TypeScript/18CustomItemService/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/18CustomItemService/types/controllers/WeatherController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/18CustomItemService/types/controllers/WishlistController.d.ts b/TypeScript/18CustomItemService/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/18CustomItemService/types/controllers/WishlistController.d.ts +++ b/TypeScript/18CustomItemService/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/18CustomItemService/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/18CustomItemService/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/18CustomItemService/types/generators/BotGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/18CustomItemService/types/generators/BotGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/18CustomItemService/types/generators/BotInventoryGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/18CustomItemService/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/18CustomItemService/types/generators/BotLootGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/18CustomItemService/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/18CustomItemService/types/generators/BotWeaponGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/18CustomItemService/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/18CustomItemService/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/18CustomItemService/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/18CustomItemService/types/generators/LocationGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/18CustomItemService/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/18CustomItemService/types/generators/LocationLootGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/18CustomItemService/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/18CustomItemService/types/generators/LootGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/18CustomItemService/types/generators/LootGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/18CustomItemService/types/generators/PlayerScavGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/18CustomItemService/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/18CustomItemService/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/18CustomItemService/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/18CustomItemService/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/18CustomItemService/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/18CustomItemService/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/18CustomItemService/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/18CustomItemService/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/18CustomItemService/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/18CustomItemService/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/18CustomItemService/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/18CustomItemService/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/18CustomItemService/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/18CustomItemService/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/18CustomItemService/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/18CustomItemService/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/18CustomItemService/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/18CustomItemService/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/18CustomItemService/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/18CustomItemService/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/18CustomItemService/types/helpers/BotHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/18CustomItemService/types/helpers/BotHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/18CustomItemService/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/18CustomItemService/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/18CustomItemService/types/helpers/DialogueHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/18CustomItemService/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/18CustomItemService/types/helpers/HandbookHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/18CustomItemService/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/18CustomItemService/types/helpers/HealthHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/18CustomItemService/types/helpers/HealthHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/18CustomItemService/types/helpers/HideoutHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/18CustomItemService/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/18CustomItemService/types/helpers/InRaidHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/18CustomItemService/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/18CustomItemService/types/helpers/InventoryHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/18CustomItemService/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/18CustomItemService/types/helpers/ItemHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/18CustomItemService/types/helpers/ItemHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/18CustomItemService/types/helpers/PresetHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/18CustomItemService/types/helpers/PresetHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/18CustomItemService/types/helpers/ProfileHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/18CustomItemService/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/18CustomItemService/types/helpers/QuestHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/18CustomItemService/types/helpers/QuestHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/18CustomItemService/types/helpers/RagfairHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/18CustomItemService/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/18CustomItemService/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/18CustomItemService/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/18CustomItemService/types/helpers/RagfairSellHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/18CustomItemService/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/18CustomItemService/types/helpers/RagfairServerHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/18CustomItemService/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/18CustomItemService/types/helpers/RepairHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/18CustomItemService/types/helpers/RepairHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/18CustomItemService/types/helpers/SecureContainerHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/18CustomItemService/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/18CustomItemService/types/helpers/TradeHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/18CustomItemService/types/helpers/TradeHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/18CustomItemService/types/helpers/TraderAssortHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/18CustomItemService/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/18CustomItemService/types/helpers/TraderHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/18CustomItemService/types/helpers/TraderHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/18CustomItemService/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/18CustomItemService/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/18CustomItemService/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/18CustomItemService/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/18CustomItemService/types/loaders/BundleLoader.d.ts b/TypeScript/18CustomItemService/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/18CustomItemService/types/loaders/BundleLoader.d.ts +++ b/TypeScript/18CustomItemService/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/18CustomItemService/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/18CustomItemService/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/18CustomItemService/types/models/eft/common/IGlobals.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/ILocation.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/ILocationBase.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/IItem.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/18CustomItemService/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/18CustomItemService/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/18CustomItemService/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/18CustomItemService/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/18CustomItemService/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/18CustomItemService/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/18CustomItemService/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/18CustomItemService/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/18CustomItemService/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/18CustomItemService/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/18CustomItemService/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/18CustomItemService/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/18CustomItemService/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/18CustomItemService/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/18CustomItemService/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/18CustomItemService/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/18CustomItemService/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/18CustomItemService/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/18CustomItemService/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/18CustomItemService/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/18CustomItemService/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/18CustomItemService/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/18CustomItemService/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/18CustomItemService/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/18CustomItemService/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/18CustomItemService/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/18CustomItemService/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/18CustomItemService/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/18CustomItemService/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/18CustomItemService/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/18CustomItemService/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/18CustomItemService/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/18CustomItemService/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/18CustomItemService/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/18CustomItemService/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/18CustomItemService/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/18CustomItemService/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/18CustomItemService/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/18CustomItemService/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/18CustomItemService/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/18CustomItemService/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/18CustomItemService/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/18CustomItemService/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/18CustomItemService/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/18CustomItemService/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/18CustomItemService/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/18CustomItemService/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/18CustomItemService/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/18CustomItemService/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/18CustomItemService/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/18CustomItemService/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/18CustomItemService/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/18CustomItemService/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/18CustomItemService/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/18CustomItemService/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/18CustomItemService/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/18CustomItemService/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/18CustomItemService/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/18CustomItemService/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/18CustomItemService/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/18CustomItemService/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/18CustomItemService/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/18CustomItemService/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/18CustomItemService/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/18CustomItemService/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/18CustomItemService/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/18CustomItemService/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/18CustomItemService/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/18CustomItemService/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/18CustomItemService/types/models/enums/AirdropType.d.ts b/TypeScript/18CustomItemService/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/18CustomItemService/types/models/enums/AirdropType.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/18CustomItemService/types/models/enums/BaseClasses.d.ts b/TypeScript/18CustomItemService/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/18CustomItemService/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/18CustomItemService/types/models/enums/ConfigTypes.d.ts b/TypeScript/18CustomItemService/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/18CustomItemService/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/18CustomItemService/types/models/enums/HideoutAreas.d.ts b/TypeScript/18CustomItemService/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/18CustomItemService/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/18CustomItemService/types/models/enums/HideoutEventActions.d.ts b/TypeScript/18CustomItemService/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/18CustomItemService/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/18CustomItemService/types/models/enums/ItemTpl.d.ts b/TypeScript/18CustomItemService/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/18CustomItemService/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/18CustomItemService/types/models/enums/QuestRewardType.d.ts b/TypeScript/18CustomItemService/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/18CustomItemService/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/18CustomItemService/types/models/enums/TraderServiceType.d.ts b/TypeScript/18CustomItemService/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/18CustomItemService/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/18CustomItemService/types/models/enums/Weapons.d.ts b/TypeScript/18CustomItemService/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/18CustomItemService/types/models/enums/Weapons.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/18CustomItemService/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/18CustomItemService/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/18CustomItemService/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/18CustomItemService/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/18CustomItemService/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/18CustomItemService/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/18CustomItemService/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/18CustomItemService/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/18CustomItemService/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/18CustomItemService/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/18CustomItemService/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/18CustomItemService/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/18CustomItemService/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/18CustomItemService/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/18CustomItemService/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/18CustomItemService/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/18CustomItemService/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/18CustomItemService/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/18CustomItemService/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/18CustomItemService/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/18CustomItemService/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/18CustomItemService/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/18CustomItemService/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/18CustomItemService/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/18CustomItemService/types/models/spt/config/IBotConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IBotDurability.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/18CustomItemService/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/18CustomItemService/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/18CustomItemService/types/models/spt/config/ILootConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/18CustomItemService/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/18CustomItemService/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/18CustomItemService/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/18CustomItemService/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/18CustomItemService/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/18CustomItemService/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/18CustomItemService/types/models/spt/controllers/IBotController.d.ts b/TypeScript/18CustomItemService/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/18CustomItemService/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/18CustomItemService/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/18CustomItemService/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/18CustomItemService/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/18CustomItemService/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/18CustomItemService/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/18CustomItemService/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/18CustomItemService/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/18CustomItemService/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/18CustomItemService/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/18CustomItemService/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/18CustomItemService/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/18CustomItemService/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/18CustomItemService/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/18CustomItemService/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/18CustomItemService/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/18CustomItemService/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/18CustomItemService/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/18CustomItemService/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/18CustomItemService/types/models/spt/hideout/IHideout.d.ts b/TypeScript/18CustomItemService/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/18CustomItemService/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/18CustomItemService/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/18CustomItemService/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/18CustomItemService/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/18CustomItemService/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/18CustomItemService/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/18CustomItemService/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/18CustomItemService/types/models/spt/templates/ITemplates.d.ts b/TypeScript/18CustomItemService/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/18CustomItemService/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/18CustomItemService/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/18CustomItemService/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/18CustomItemService/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/18CustomItemService/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/18CustomItemService/types/routers/EventOutputHolder.d.ts b/TypeScript/18CustomItemService/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/18CustomItemService/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/18CustomItemService/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/18CustomItemService/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/18CustomItemService/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/18CustomItemService/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/18CustomItemService/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/18CustomItemService/types/routers/static/GameStaticRouter.d.ts b/TypeScript/18CustomItemService/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/18CustomItemService/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/18CustomItemService/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/18CustomItemService/types/servers/SaveServer.d.ts b/TypeScript/18CustomItemService/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/18CustomItemService/types/servers/SaveServer.d.ts +++ b/TypeScript/18CustomItemService/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/18CustomItemService/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/18CustomItemService/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/18CustomItemService/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/18CustomItemService/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/18CustomItemService/types/services/AirdropService.d.ts b/TypeScript/18CustomItemService/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/18CustomItemService/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/18CustomItemService/types/services/BotEquipmentFilterService.d.ts b/TypeScript/18CustomItemService/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/18CustomItemService/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/18CustomItemService/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/18CustomItemService/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/18CustomItemService/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/18CustomItemService/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/18CustomItemService/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/18CustomItemService/types/services/BotGenerationCacheService.d.ts b/TypeScript/18CustomItemService/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/18CustomItemService/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/18CustomItemService/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/18CustomItemService/types/services/BotNameService.d.ts b/TypeScript/18CustomItemService/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/18CustomItemService/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/18CustomItemService/types/services/BotWeaponModLimitService.d.ts b/TypeScript/18CustomItemService/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/18CustomItemService/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/18CustomItemService/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/18CustomItemService/types/services/CircleOfCultistService.d.ts b/TypeScript/18CustomItemService/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/18CustomItemService/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/18CustomItemService/types/services/CustomLocationWaveService.d.ts b/TypeScript/18CustomItemService/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/18CustomItemService/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/18CustomItemService/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/18CustomItemService/types/services/DatabaseService.d.ts b/TypeScript/18CustomItemService/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/18CustomItemService/types/services/DatabaseService.d.ts +++ b/TypeScript/18CustomItemService/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/18CustomItemService/types/services/FenceService.d.ts b/TypeScript/18CustomItemService/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/18CustomItemService/types/services/FenceService.d.ts +++ b/TypeScript/18CustomItemService/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/18CustomItemService/types/services/InsuranceService.d.ts b/TypeScript/18CustomItemService/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/18CustomItemService/types/services/InsuranceService.d.ts +++ b/TypeScript/18CustomItemService/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/18CustomItemService/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/18CustomItemService/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/18CustomItemService/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/18CustomItemService/types/services/LocationLifecycleService.d.ts b/TypeScript/18CustomItemService/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/18CustomItemService/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/18CustomItemService/types/services/MailSendService.d.ts b/TypeScript/18CustomItemService/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/18CustomItemService/types/services/MailSendService.d.ts +++ b/TypeScript/18CustomItemService/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/18CustomItemService/types/services/MapMarkerService.d.ts b/TypeScript/18CustomItemService/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/18CustomItemService/types/services/MapMarkerService.d.ts +++ b/TypeScript/18CustomItemService/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/18CustomItemService/types/services/PaymentService.d.ts b/TypeScript/18CustomItemService/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/18CustomItemService/types/services/PaymentService.d.ts +++ b/TypeScript/18CustomItemService/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/18CustomItemService/types/services/PmcChatResponseService.d.ts b/TypeScript/18CustomItemService/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/18CustomItemService/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/18CustomItemService/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/18CustomItemService/types/services/ProfileFixerService.d.ts b/TypeScript/18CustomItemService/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/18CustomItemService/types/services/ProfileFixerService.d.ts +++ b/TypeScript/18CustomItemService/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/18CustomItemService/types/services/RagfairOfferService.d.ts b/TypeScript/18CustomItemService/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/18CustomItemService/types/services/RagfairOfferService.d.ts +++ b/TypeScript/18CustomItemService/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/18CustomItemService/types/services/RagfairPriceService.d.ts b/TypeScript/18CustomItemService/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/18CustomItemService/types/services/RagfairPriceService.d.ts +++ b/TypeScript/18CustomItemService/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/18CustomItemService/types/services/RagfairTaxService.d.ts b/TypeScript/18CustomItemService/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/18CustomItemService/types/services/RagfairTaxService.d.ts +++ b/TypeScript/18CustomItemService/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/18CustomItemService/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/18CustomItemService/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/18CustomItemService/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/18CustomItemService/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/18CustomItemService/types/services/RepairService.d.ts b/TypeScript/18CustomItemService/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/18CustomItemService/types/services/RepairService.d.ts +++ b/TypeScript/18CustomItemService/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/18CustomItemService/types/services/SeasonalEventService.d.ts b/TypeScript/18CustomItemService/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/18CustomItemService/types/services/SeasonalEventService.d.ts +++ b/TypeScript/18CustomItemService/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/18CustomItemService/types/services/TraderServicesService.d.ts b/TypeScript/18CustomItemService/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/18CustomItemService/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/18CustomItemService/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/18CustomItemService/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/18CustomItemService/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/18CustomItemService/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/18CustomItemService/types/utils/HashUtil.d.ts b/TypeScript/18CustomItemService/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/18CustomItemService/types/utils/HashUtil.d.ts +++ b/TypeScript/18CustomItemService/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/BotCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/DataCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/GameCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/InraidCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/19UseExternalLibraries/types/callbacks/LocationCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/MatchCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/TraderCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/19UseExternalLibraries/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/19UseExternalLibraries/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/19UseExternalLibraries/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/19UseExternalLibraries/types/controllers/BotController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/BotController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/19UseExternalLibraries/types/controllers/CustomizationController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/CustomizationController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/19UseExternalLibraries/types/controllers/GameController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/GameController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/19UseExternalLibraries/types/controllers/HideoutController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/HideoutController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/19UseExternalLibraries/types/controllers/InraidController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/InraidController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/19UseExternalLibraries/types/controllers/InsuranceController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/InsuranceController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/19UseExternalLibraries/types/controllers/LocationController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/LocationController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/19UseExternalLibraries/types/controllers/MatchController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/MatchController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/19UseExternalLibraries/types/controllers/ProfileController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/ProfileController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/19UseExternalLibraries/types/controllers/QuestController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/QuestController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/19UseExternalLibraries/types/controllers/RagfairController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/RagfairController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/19UseExternalLibraries/types/controllers/TradeController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/TradeController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/19UseExternalLibraries/types/controllers/TraderController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/TraderController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/19UseExternalLibraries/types/controllers/WeatherController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/WeatherController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/19UseExternalLibraries/types/controllers/WishlistController.d.ts b/TypeScript/19UseExternalLibraries/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/19UseExternalLibraries/types/controllers/WishlistController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/19UseExternalLibraries/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/19UseExternalLibraries/types/generators/BotGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/BotGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/19UseExternalLibraries/types/generators/BotInventoryGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/19UseExternalLibraries/types/generators/BotLootGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/19UseExternalLibraries/types/generators/BotWeaponGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/19UseExternalLibraries/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/19UseExternalLibraries/types/generators/LocationGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/19UseExternalLibraries/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/19UseExternalLibraries/types/generators/LocationLootGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/19UseExternalLibraries/types/generators/LootGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/LootGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/19UseExternalLibraries/types/generators/PlayerScavGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/19UseExternalLibraries/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/19UseExternalLibraries/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/19UseExternalLibraries/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/19UseExternalLibraries/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/19UseExternalLibraries/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/19UseExternalLibraries/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/19UseExternalLibraries/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/19UseExternalLibraries/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/19UseExternalLibraries/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/19UseExternalLibraries/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/BotHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/BotHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/19UseExternalLibraries/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/19UseExternalLibraries/types/helpers/DialogueHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/19UseExternalLibraries/types/helpers/HandbookHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/19UseExternalLibraries/types/helpers/HealthHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/HealthHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/19UseExternalLibraries/types/helpers/HideoutHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/InRaidHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/InventoryHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/19UseExternalLibraries/types/helpers/ItemHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/ItemHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/PresetHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/PresetHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/19UseExternalLibraries/types/helpers/ProfileHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/QuestHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/QuestHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/19UseExternalLibraries/types/helpers/RagfairHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/19UseExternalLibraries/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/RagfairSellHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/RagfairServerHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/RepairHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/RepairHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/19UseExternalLibraries/types/helpers/SecureContainerHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/TradeHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/TradeHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/19UseExternalLibraries/types/helpers/TraderAssortHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/19UseExternalLibraries/types/helpers/TraderHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/TraderHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/19UseExternalLibraries/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/19UseExternalLibraries/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/19UseExternalLibraries/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/19UseExternalLibraries/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/19UseExternalLibraries/types/loaders/BundleLoader.d.ts b/TypeScript/19UseExternalLibraries/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/19UseExternalLibraries/types/loaders/BundleLoader.d.ts +++ b/TypeScript/19UseExternalLibraries/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/IGlobals.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocation.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocationBase.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IItem.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/19UseExternalLibraries/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/19UseExternalLibraries/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/AirdropType.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/AirdropType.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/BaseClasses.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/ConfigTypes.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/HideoutAreas.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/HideoutEventActions.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/ItemTpl.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/QuestRewardType.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/TraderServiceType.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/Weapons.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/Weapons.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/19UseExternalLibraries/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/19UseExternalLibraries/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/19UseExternalLibraries/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/19UseExternalLibraries/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/19UseExternalLibraries/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/19UseExternalLibraries/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/19UseExternalLibraries/types/models/spt/config/IBotConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IBotDurability.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/ILootConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/controllers/IBotController.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/hideout/IHideout.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/templates/ITemplates.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/19UseExternalLibraries/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/19UseExternalLibraries/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/19UseExternalLibraries/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/19UseExternalLibraries/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/19UseExternalLibraries/types/routers/EventOutputHolder.d.ts b/TypeScript/19UseExternalLibraries/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/19UseExternalLibraries/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/19UseExternalLibraries/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/19UseExternalLibraries/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/19UseExternalLibraries/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/19UseExternalLibraries/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/19UseExternalLibraries/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/19UseExternalLibraries/types/routers/static/GameStaticRouter.d.ts b/TypeScript/19UseExternalLibraries/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/19UseExternalLibraries/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/19UseExternalLibraries/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/19UseExternalLibraries/types/servers/SaveServer.d.ts b/TypeScript/19UseExternalLibraries/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/19UseExternalLibraries/types/servers/SaveServer.d.ts +++ b/TypeScript/19UseExternalLibraries/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/19UseExternalLibraries/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/19UseExternalLibraries/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/19UseExternalLibraries/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/19UseExternalLibraries/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/19UseExternalLibraries/types/services/AirdropService.d.ts b/TypeScript/19UseExternalLibraries/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/19UseExternalLibraries/types/services/BotEquipmentFilterService.d.ts b/TypeScript/19UseExternalLibraries/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/19UseExternalLibraries/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/19UseExternalLibraries/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/19UseExternalLibraries/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/19UseExternalLibraries/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/19UseExternalLibraries/types/services/BotGenerationCacheService.d.ts b/TypeScript/19UseExternalLibraries/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/19UseExternalLibraries/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/19UseExternalLibraries/types/services/BotNameService.d.ts b/TypeScript/19UseExternalLibraries/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/19UseExternalLibraries/types/services/BotWeaponModLimitService.d.ts b/TypeScript/19UseExternalLibraries/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/19UseExternalLibraries/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/19UseExternalLibraries/types/services/CircleOfCultistService.d.ts b/TypeScript/19UseExternalLibraries/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/19UseExternalLibraries/types/services/CustomLocationWaveService.d.ts b/TypeScript/19UseExternalLibraries/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/19UseExternalLibraries/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/19UseExternalLibraries/types/services/DatabaseService.d.ts b/TypeScript/19UseExternalLibraries/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/19UseExternalLibraries/types/services/DatabaseService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/19UseExternalLibraries/types/services/FenceService.d.ts b/TypeScript/19UseExternalLibraries/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/19UseExternalLibraries/types/services/FenceService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/19UseExternalLibraries/types/services/InsuranceService.d.ts b/TypeScript/19UseExternalLibraries/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/19UseExternalLibraries/types/services/InsuranceService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/19UseExternalLibraries/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/19UseExternalLibraries/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/19UseExternalLibraries/types/services/LocationLifecycleService.d.ts b/TypeScript/19UseExternalLibraries/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/19UseExternalLibraries/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/19UseExternalLibraries/types/services/MailSendService.d.ts b/TypeScript/19UseExternalLibraries/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/19UseExternalLibraries/types/services/MailSendService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/19UseExternalLibraries/types/services/MapMarkerService.d.ts b/TypeScript/19UseExternalLibraries/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/19UseExternalLibraries/types/services/MapMarkerService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/19UseExternalLibraries/types/services/PaymentService.d.ts b/TypeScript/19UseExternalLibraries/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/19UseExternalLibraries/types/services/PaymentService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/19UseExternalLibraries/types/services/PmcChatResponseService.d.ts b/TypeScript/19UseExternalLibraries/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/19UseExternalLibraries/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/19UseExternalLibraries/types/services/ProfileFixerService.d.ts b/TypeScript/19UseExternalLibraries/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/19UseExternalLibraries/types/services/ProfileFixerService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/19UseExternalLibraries/types/services/RagfairOfferService.d.ts b/TypeScript/19UseExternalLibraries/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/19UseExternalLibraries/types/services/RagfairOfferService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/19UseExternalLibraries/types/services/RagfairPriceService.d.ts b/TypeScript/19UseExternalLibraries/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/19UseExternalLibraries/types/services/RagfairPriceService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/19UseExternalLibraries/types/services/RagfairTaxService.d.ts b/TypeScript/19UseExternalLibraries/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/19UseExternalLibraries/types/services/RagfairTaxService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/19UseExternalLibraries/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/19UseExternalLibraries/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/19UseExternalLibraries/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/19UseExternalLibraries/types/services/RepairService.d.ts b/TypeScript/19UseExternalLibraries/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/19UseExternalLibraries/types/services/RepairService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/19UseExternalLibraries/types/services/SeasonalEventService.d.ts b/TypeScript/19UseExternalLibraries/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/19UseExternalLibraries/types/services/SeasonalEventService.d.ts +++ b/TypeScript/19UseExternalLibraries/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/19UseExternalLibraries/types/services/TraderServicesService.d.ts b/TypeScript/19UseExternalLibraries/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/19UseExternalLibraries/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/19UseExternalLibraries/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/19UseExternalLibraries/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/19UseExternalLibraries/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/19UseExternalLibraries/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/19UseExternalLibraries/types/utils/HashUtil.d.ts b/TypeScript/19UseExternalLibraries/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/19UseExternalLibraries/types/utils/HashUtil.d.ts +++ b/TypeScript/19UseExternalLibraries/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/1LogToConsole/types/callbacks/BotCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/1LogToConsole/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/1LogToConsole/types/callbacks/DataCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/1LogToConsole/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/1LogToConsole/types/callbacks/GameCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/1LogToConsole/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/1LogToConsole/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/1LogToConsole/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/1LogToConsole/types/callbacks/InraidCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/1LogToConsole/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/1LogToConsole/types/callbacks/LocationCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/1LogToConsole/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/1LogToConsole/types/callbacks/MatchCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/1LogToConsole/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/1LogToConsole/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/1LogToConsole/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/1LogToConsole/types/callbacks/TraderCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/1LogToConsole/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/1LogToConsole/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/1LogToConsole/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/1LogToConsole/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/1LogToConsole/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/1LogToConsole/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/1LogToConsole/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/1LogToConsole/types/controllers/BotController.d.ts b/TypeScript/1LogToConsole/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/1LogToConsole/types/controllers/BotController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/1LogToConsole/types/controllers/CustomizationController.d.ts b/TypeScript/1LogToConsole/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/1LogToConsole/types/controllers/CustomizationController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/1LogToConsole/types/controllers/GameController.d.ts b/TypeScript/1LogToConsole/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/1LogToConsole/types/controllers/GameController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/1LogToConsole/types/controllers/HideoutController.d.ts b/TypeScript/1LogToConsole/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/1LogToConsole/types/controllers/HideoutController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/1LogToConsole/types/controllers/InraidController.d.ts b/TypeScript/1LogToConsole/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/1LogToConsole/types/controllers/InraidController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/1LogToConsole/types/controllers/InsuranceController.d.ts b/TypeScript/1LogToConsole/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/1LogToConsole/types/controllers/InsuranceController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/1LogToConsole/types/controllers/LocationController.d.ts b/TypeScript/1LogToConsole/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/1LogToConsole/types/controllers/LocationController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/1LogToConsole/types/controllers/MatchController.d.ts b/TypeScript/1LogToConsole/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/1LogToConsole/types/controllers/MatchController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/1LogToConsole/types/controllers/ProfileController.d.ts b/TypeScript/1LogToConsole/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/1LogToConsole/types/controllers/ProfileController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/1LogToConsole/types/controllers/QuestController.d.ts b/TypeScript/1LogToConsole/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/1LogToConsole/types/controllers/QuestController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/1LogToConsole/types/controllers/RagfairController.d.ts b/TypeScript/1LogToConsole/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/1LogToConsole/types/controllers/RagfairController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/1LogToConsole/types/controllers/TradeController.d.ts b/TypeScript/1LogToConsole/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/1LogToConsole/types/controllers/TradeController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/1LogToConsole/types/controllers/TraderController.d.ts b/TypeScript/1LogToConsole/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/1LogToConsole/types/controllers/TraderController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/1LogToConsole/types/controllers/WeatherController.d.ts b/TypeScript/1LogToConsole/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/1LogToConsole/types/controllers/WeatherController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/1LogToConsole/types/controllers/WishlistController.d.ts b/TypeScript/1LogToConsole/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/1LogToConsole/types/controllers/WishlistController.d.ts +++ b/TypeScript/1LogToConsole/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/1LogToConsole/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/1LogToConsole/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/1LogToConsole/types/generators/BotGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/1LogToConsole/types/generators/BotGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/1LogToConsole/types/generators/BotInventoryGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/1LogToConsole/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/1LogToConsole/types/generators/BotLootGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/1LogToConsole/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/1LogToConsole/types/generators/BotWeaponGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/1LogToConsole/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/1LogToConsole/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/1LogToConsole/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/1LogToConsole/types/generators/LocationGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/1LogToConsole/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/1LogToConsole/types/generators/LocationLootGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/1LogToConsole/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/1LogToConsole/types/generators/LootGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/1LogToConsole/types/generators/LootGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/1LogToConsole/types/generators/PlayerScavGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/1LogToConsole/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/1LogToConsole/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/1LogToConsole/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/1LogToConsole/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/1LogToConsole/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/1LogToConsole/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/1LogToConsole/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/1LogToConsole/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/1LogToConsole/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/1LogToConsole/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/1LogToConsole/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/1LogToConsole/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/1LogToConsole/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/1LogToConsole/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/1LogToConsole/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/1LogToConsole/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/1LogToConsole/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/1LogToConsole/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/1LogToConsole/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/1LogToConsole/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/1LogToConsole/types/helpers/BotHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/1LogToConsole/types/helpers/BotHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/1LogToConsole/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/1LogToConsole/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/1LogToConsole/types/helpers/DialogueHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/1LogToConsole/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/1LogToConsole/types/helpers/HandbookHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/1LogToConsole/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/1LogToConsole/types/helpers/HealthHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/1LogToConsole/types/helpers/HealthHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/1LogToConsole/types/helpers/HideoutHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/1LogToConsole/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/1LogToConsole/types/helpers/InRaidHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/1LogToConsole/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/1LogToConsole/types/helpers/InventoryHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/1LogToConsole/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/1LogToConsole/types/helpers/ItemHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/1LogToConsole/types/helpers/ItemHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/1LogToConsole/types/helpers/PresetHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/1LogToConsole/types/helpers/PresetHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/1LogToConsole/types/helpers/ProfileHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/1LogToConsole/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/1LogToConsole/types/helpers/QuestHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/1LogToConsole/types/helpers/QuestHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/1LogToConsole/types/helpers/RagfairHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/1LogToConsole/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/1LogToConsole/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/1LogToConsole/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/1LogToConsole/types/helpers/RagfairSellHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/1LogToConsole/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/1LogToConsole/types/helpers/RagfairServerHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/1LogToConsole/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/1LogToConsole/types/helpers/RepairHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/1LogToConsole/types/helpers/RepairHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/1LogToConsole/types/helpers/SecureContainerHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/1LogToConsole/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/1LogToConsole/types/helpers/TradeHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/1LogToConsole/types/helpers/TradeHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/1LogToConsole/types/helpers/TraderAssortHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/1LogToConsole/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/1LogToConsole/types/helpers/TraderHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/1LogToConsole/types/helpers/TraderHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/1LogToConsole/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/1LogToConsole/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/1LogToConsole/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/1LogToConsole/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/1LogToConsole/types/loaders/BundleLoader.d.ts b/TypeScript/1LogToConsole/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/1LogToConsole/types/loaders/BundleLoader.d.ts +++ b/TypeScript/1LogToConsole/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/1LogToConsole/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/1LogToConsole/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/1LogToConsole/types/models/eft/common/IGlobals.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/ILocation.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/ILocationBase.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/IItem.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/1LogToConsole/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/1LogToConsole/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/1LogToConsole/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/1LogToConsole/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/1LogToConsole/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/1LogToConsole/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/1LogToConsole/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/1LogToConsole/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/1LogToConsole/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/1LogToConsole/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/1LogToConsole/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/1LogToConsole/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/1LogToConsole/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/1LogToConsole/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/1LogToConsole/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/1LogToConsole/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/1LogToConsole/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/1LogToConsole/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/1LogToConsole/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/1LogToConsole/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/1LogToConsole/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/1LogToConsole/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/1LogToConsole/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/1LogToConsole/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/1LogToConsole/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/1LogToConsole/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/1LogToConsole/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/1LogToConsole/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/1LogToConsole/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/1LogToConsole/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/1LogToConsole/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/1LogToConsole/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/1LogToConsole/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/1LogToConsole/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/1LogToConsole/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/1LogToConsole/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/1LogToConsole/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/1LogToConsole/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/1LogToConsole/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/1LogToConsole/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/1LogToConsole/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/1LogToConsole/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/1LogToConsole/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/1LogToConsole/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/1LogToConsole/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/1LogToConsole/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/1LogToConsole/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/1LogToConsole/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/1LogToConsole/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/1LogToConsole/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/1LogToConsole/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/1LogToConsole/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/1LogToConsole/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/1LogToConsole/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/1LogToConsole/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/1LogToConsole/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/1LogToConsole/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/1LogToConsole/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/1LogToConsole/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/1LogToConsole/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/1LogToConsole/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/1LogToConsole/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/1LogToConsole/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/1LogToConsole/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/1LogToConsole/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/1LogToConsole/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/1LogToConsole/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/1LogToConsole/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/1LogToConsole/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/1LogToConsole/types/models/enums/AirdropType.d.ts b/TypeScript/1LogToConsole/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/1LogToConsole/types/models/enums/AirdropType.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/1LogToConsole/types/models/enums/BaseClasses.d.ts b/TypeScript/1LogToConsole/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/1LogToConsole/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/1LogToConsole/types/models/enums/ConfigTypes.d.ts b/TypeScript/1LogToConsole/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/1LogToConsole/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/1LogToConsole/types/models/enums/HideoutAreas.d.ts b/TypeScript/1LogToConsole/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/1LogToConsole/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/1LogToConsole/types/models/enums/HideoutEventActions.d.ts b/TypeScript/1LogToConsole/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/1LogToConsole/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/1LogToConsole/types/models/enums/ItemTpl.d.ts b/TypeScript/1LogToConsole/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/1LogToConsole/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/1LogToConsole/types/models/enums/QuestRewardType.d.ts b/TypeScript/1LogToConsole/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/1LogToConsole/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/1LogToConsole/types/models/enums/TraderServiceType.d.ts b/TypeScript/1LogToConsole/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/1LogToConsole/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/1LogToConsole/types/models/enums/Weapons.d.ts b/TypeScript/1LogToConsole/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/1LogToConsole/types/models/enums/Weapons.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/1LogToConsole/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/1LogToConsole/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/1LogToConsole/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/1LogToConsole/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/1LogToConsole/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/1LogToConsole/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/1LogToConsole/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/1LogToConsole/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/1LogToConsole/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/1LogToConsole/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/1LogToConsole/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/1LogToConsole/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/1LogToConsole/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/1LogToConsole/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/1LogToConsole/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/1LogToConsole/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/1LogToConsole/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/1LogToConsole/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/1LogToConsole/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/1LogToConsole/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/1LogToConsole/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/1LogToConsole/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/1LogToConsole/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/1LogToConsole/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/1LogToConsole/types/models/spt/config/IBotConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IBotDurability.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/1LogToConsole/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/1LogToConsole/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/1LogToConsole/types/models/spt/config/ILootConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/1LogToConsole/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/1LogToConsole/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/1LogToConsole/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/1LogToConsole/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/1LogToConsole/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/1LogToConsole/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/1LogToConsole/types/models/spt/controllers/IBotController.d.ts b/TypeScript/1LogToConsole/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/1LogToConsole/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/1LogToConsole/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/1LogToConsole/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/1LogToConsole/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/1LogToConsole/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/1LogToConsole/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/1LogToConsole/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/1LogToConsole/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/1LogToConsole/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/1LogToConsole/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/1LogToConsole/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/1LogToConsole/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/1LogToConsole/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/1LogToConsole/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/1LogToConsole/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/1LogToConsole/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/1LogToConsole/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/1LogToConsole/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/1LogToConsole/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/1LogToConsole/types/models/spt/hideout/IHideout.d.ts b/TypeScript/1LogToConsole/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/1LogToConsole/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/1LogToConsole/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/1LogToConsole/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/1LogToConsole/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/1LogToConsole/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/1LogToConsole/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/1LogToConsole/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/1LogToConsole/types/models/spt/templates/ITemplates.d.ts b/TypeScript/1LogToConsole/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/1LogToConsole/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/1LogToConsole/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/1LogToConsole/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/1LogToConsole/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/1LogToConsole/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/1LogToConsole/types/routers/EventOutputHolder.d.ts b/TypeScript/1LogToConsole/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/1LogToConsole/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/1LogToConsole/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/1LogToConsole/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/1LogToConsole/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/1LogToConsole/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/1LogToConsole/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/1LogToConsole/types/routers/static/GameStaticRouter.d.ts b/TypeScript/1LogToConsole/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/1LogToConsole/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/1LogToConsole/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/1LogToConsole/types/servers/SaveServer.d.ts b/TypeScript/1LogToConsole/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/1LogToConsole/types/servers/SaveServer.d.ts +++ b/TypeScript/1LogToConsole/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/1LogToConsole/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/1LogToConsole/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/1LogToConsole/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/1LogToConsole/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/1LogToConsole/types/services/AirdropService.d.ts b/TypeScript/1LogToConsole/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/1LogToConsole/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/1LogToConsole/types/services/BotEquipmentFilterService.d.ts b/TypeScript/1LogToConsole/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/1LogToConsole/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/1LogToConsole/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/1LogToConsole/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/1LogToConsole/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/1LogToConsole/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/1LogToConsole/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/1LogToConsole/types/services/BotGenerationCacheService.d.ts b/TypeScript/1LogToConsole/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/1LogToConsole/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/1LogToConsole/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/1LogToConsole/types/services/BotNameService.d.ts b/TypeScript/1LogToConsole/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/1LogToConsole/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/1LogToConsole/types/services/BotWeaponModLimitService.d.ts b/TypeScript/1LogToConsole/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/1LogToConsole/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/1LogToConsole/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/1LogToConsole/types/services/CircleOfCultistService.d.ts b/TypeScript/1LogToConsole/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/1LogToConsole/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/1LogToConsole/types/services/CustomLocationWaveService.d.ts b/TypeScript/1LogToConsole/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/1LogToConsole/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/1LogToConsole/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/1LogToConsole/types/services/DatabaseService.d.ts b/TypeScript/1LogToConsole/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/1LogToConsole/types/services/DatabaseService.d.ts +++ b/TypeScript/1LogToConsole/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/1LogToConsole/types/services/FenceService.d.ts b/TypeScript/1LogToConsole/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/1LogToConsole/types/services/FenceService.d.ts +++ b/TypeScript/1LogToConsole/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/1LogToConsole/types/services/InsuranceService.d.ts b/TypeScript/1LogToConsole/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/1LogToConsole/types/services/InsuranceService.d.ts +++ b/TypeScript/1LogToConsole/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/1LogToConsole/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/1LogToConsole/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/1LogToConsole/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/1LogToConsole/types/services/LocationLifecycleService.d.ts b/TypeScript/1LogToConsole/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/1LogToConsole/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/1LogToConsole/types/services/MailSendService.d.ts b/TypeScript/1LogToConsole/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/1LogToConsole/types/services/MailSendService.d.ts +++ b/TypeScript/1LogToConsole/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/1LogToConsole/types/services/MapMarkerService.d.ts b/TypeScript/1LogToConsole/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/1LogToConsole/types/services/MapMarkerService.d.ts +++ b/TypeScript/1LogToConsole/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/1LogToConsole/types/services/PaymentService.d.ts b/TypeScript/1LogToConsole/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/1LogToConsole/types/services/PaymentService.d.ts +++ b/TypeScript/1LogToConsole/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/1LogToConsole/types/services/PmcChatResponseService.d.ts b/TypeScript/1LogToConsole/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/1LogToConsole/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/1LogToConsole/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/1LogToConsole/types/services/ProfileFixerService.d.ts b/TypeScript/1LogToConsole/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/1LogToConsole/types/services/ProfileFixerService.d.ts +++ b/TypeScript/1LogToConsole/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/1LogToConsole/types/services/RagfairOfferService.d.ts b/TypeScript/1LogToConsole/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/1LogToConsole/types/services/RagfairOfferService.d.ts +++ b/TypeScript/1LogToConsole/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/1LogToConsole/types/services/RagfairPriceService.d.ts b/TypeScript/1LogToConsole/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/1LogToConsole/types/services/RagfairPriceService.d.ts +++ b/TypeScript/1LogToConsole/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/1LogToConsole/types/services/RagfairTaxService.d.ts b/TypeScript/1LogToConsole/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/1LogToConsole/types/services/RagfairTaxService.d.ts +++ b/TypeScript/1LogToConsole/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/1LogToConsole/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/1LogToConsole/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/1LogToConsole/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/1LogToConsole/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/1LogToConsole/types/services/RepairService.d.ts b/TypeScript/1LogToConsole/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/1LogToConsole/types/services/RepairService.d.ts +++ b/TypeScript/1LogToConsole/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/1LogToConsole/types/services/SeasonalEventService.d.ts b/TypeScript/1LogToConsole/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/1LogToConsole/types/services/SeasonalEventService.d.ts +++ b/TypeScript/1LogToConsole/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/1LogToConsole/types/services/TraderServicesService.d.ts b/TypeScript/1LogToConsole/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/1LogToConsole/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/1LogToConsole/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/1LogToConsole/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/1LogToConsole/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/1LogToConsole/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/1LogToConsole/types/utils/HashUtil.d.ts b/TypeScript/1LogToConsole/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/1LogToConsole/types/utils/HashUtil.d.ts +++ b/TypeScript/1LogToConsole/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/20CustomChatBot/types/callbacks/BotCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/20CustomChatBot/types/callbacks/DataCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/20CustomChatBot/types/callbacks/GameCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/20CustomChatBot/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/20CustomChatBot/types/callbacks/InraidCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/20CustomChatBot/types/callbacks/LocationCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/20CustomChatBot/types/callbacks/MatchCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/20CustomChatBot/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/20CustomChatBot/types/callbacks/TraderCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/20CustomChatBot/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/20CustomChatBot/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/20CustomChatBot/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/20CustomChatBot/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/20CustomChatBot/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/20CustomChatBot/types/controllers/BotController.d.ts b/TypeScript/20CustomChatBot/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/20CustomChatBot/types/controllers/BotController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/20CustomChatBot/types/controllers/CustomizationController.d.ts b/TypeScript/20CustomChatBot/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/20CustomChatBot/types/controllers/CustomizationController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/20CustomChatBot/types/controllers/GameController.d.ts b/TypeScript/20CustomChatBot/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/20CustomChatBot/types/controllers/GameController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/20CustomChatBot/types/controllers/HideoutController.d.ts b/TypeScript/20CustomChatBot/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/20CustomChatBot/types/controllers/HideoutController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/20CustomChatBot/types/controllers/InraidController.d.ts b/TypeScript/20CustomChatBot/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/20CustomChatBot/types/controllers/InraidController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/20CustomChatBot/types/controllers/InsuranceController.d.ts b/TypeScript/20CustomChatBot/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/20CustomChatBot/types/controllers/InsuranceController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/20CustomChatBot/types/controllers/LocationController.d.ts b/TypeScript/20CustomChatBot/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/20CustomChatBot/types/controllers/LocationController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/20CustomChatBot/types/controllers/MatchController.d.ts b/TypeScript/20CustomChatBot/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/20CustomChatBot/types/controllers/MatchController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/20CustomChatBot/types/controllers/ProfileController.d.ts b/TypeScript/20CustomChatBot/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/20CustomChatBot/types/controllers/ProfileController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/20CustomChatBot/types/controllers/QuestController.d.ts b/TypeScript/20CustomChatBot/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/20CustomChatBot/types/controllers/QuestController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/20CustomChatBot/types/controllers/RagfairController.d.ts b/TypeScript/20CustomChatBot/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/20CustomChatBot/types/controllers/RagfairController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/20CustomChatBot/types/controllers/TradeController.d.ts b/TypeScript/20CustomChatBot/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/20CustomChatBot/types/controllers/TradeController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/20CustomChatBot/types/controllers/TraderController.d.ts b/TypeScript/20CustomChatBot/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/20CustomChatBot/types/controllers/TraderController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/20CustomChatBot/types/controllers/WeatherController.d.ts b/TypeScript/20CustomChatBot/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/20CustomChatBot/types/controllers/WeatherController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/20CustomChatBot/types/controllers/WishlistController.d.ts b/TypeScript/20CustomChatBot/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/20CustomChatBot/types/controllers/WishlistController.d.ts +++ b/TypeScript/20CustomChatBot/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/20CustomChatBot/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/20CustomChatBot/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/20CustomChatBot/types/generators/BotGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/20CustomChatBot/types/generators/BotGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/20CustomChatBot/types/generators/BotInventoryGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/20CustomChatBot/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/20CustomChatBot/types/generators/BotLootGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/20CustomChatBot/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/20CustomChatBot/types/generators/BotWeaponGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/20CustomChatBot/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/20CustomChatBot/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/20CustomChatBot/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/20CustomChatBot/types/generators/LocationGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/20CustomChatBot/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/20CustomChatBot/types/generators/LocationLootGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/20CustomChatBot/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/20CustomChatBot/types/generators/LootGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/20CustomChatBot/types/generators/LootGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/20CustomChatBot/types/generators/PlayerScavGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/20CustomChatBot/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/20CustomChatBot/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/20CustomChatBot/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/20CustomChatBot/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/20CustomChatBot/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/20CustomChatBot/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/20CustomChatBot/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/20CustomChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/20CustomChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/20CustomChatBot/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/20CustomChatBot/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/20CustomChatBot/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/20CustomChatBot/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/20CustomChatBot/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/20CustomChatBot/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/20CustomChatBot/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/20CustomChatBot/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/20CustomChatBot/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/20CustomChatBot/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/20CustomChatBot/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/20CustomChatBot/types/helpers/BotHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/20CustomChatBot/types/helpers/BotHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/20CustomChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/20CustomChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/20CustomChatBot/types/helpers/DialogueHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/20CustomChatBot/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/20CustomChatBot/types/helpers/HandbookHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/20CustomChatBot/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/20CustomChatBot/types/helpers/HealthHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/20CustomChatBot/types/helpers/HealthHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/20CustomChatBot/types/helpers/HideoutHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/20CustomChatBot/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/20CustomChatBot/types/helpers/InRaidHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/20CustomChatBot/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/20CustomChatBot/types/helpers/InventoryHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/20CustomChatBot/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/20CustomChatBot/types/helpers/ItemHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/20CustomChatBot/types/helpers/ItemHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/20CustomChatBot/types/helpers/PresetHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/20CustomChatBot/types/helpers/PresetHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/20CustomChatBot/types/helpers/ProfileHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/20CustomChatBot/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/20CustomChatBot/types/helpers/QuestHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/20CustomChatBot/types/helpers/QuestHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/20CustomChatBot/types/helpers/RagfairHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/20CustomChatBot/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/20CustomChatBot/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/20CustomChatBot/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/20CustomChatBot/types/helpers/RagfairSellHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/20CustomChatBot/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/20CustomChatBot/types/helpers/RagfairServerHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/20CustomChatBot/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/20CustomChatBot/types/helpers/RepairHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/20CustomChatBot/types/helpers/RepairHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/20CustomChatBot/types/helpers/SecureContainerHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/20CustomChatBot/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/20CustomChatBot/types/helpers/TradeHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/20CustomChatBot/types/helpers/TradeHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/20CustomChatBot/types/helpers/TraderAssortHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/20CustomChatBot/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/20CustomChatBot/types/helpers/TraderHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/20CustomChatBot/types/helpers/TraderHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/20CustomChatBot/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/20CustomChatBot/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/20CustomChatBot/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/20CustomChatBot/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/20CustomChatBot/types/loaders/BundleLoader.d.ts b/TypeScript/20CustomChatBot/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/20CustomChatBot/types/loaders/BundleLoader.d.ts +++ b/TypeScript/20CustomChatBot/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/IGlobals.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/ILocation.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/ILocationBase.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IItem.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/20CustomChatBot/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/20CustomChatBot/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/20CustomChatBot/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/20CustomChatBot/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/20CustomChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/20CustomChatBot/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/20CustomChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/20CustomChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/20CustomChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/20CustomChatBot/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/20CustomChatBot/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/20CustomChatBot/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/20CustomChatBot/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/20CustomChatBot/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/20CustomChatBot/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/20CustomChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/20CustomChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/20CustomChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/20CustomChatBot/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/20CustomChatBot/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/20CustomChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/20CustomChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/20CustomChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/20CustomChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/20CustomChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/20CustomChatBot/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/20CustomChatBot/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/20CustomChatBot/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/20CustomChatBot/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/20CustomChatBot/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/20CustomChatBot/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/20CustomChatBot/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/20CustomChatBot/types/models/enums/AirdropType.d.ts b/TypeScript/20CustomChatBot/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/AirdropType.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/20CustomChatBot/types/models/enums/BaseClasses.d.ts b/TypeScript/20CustomChatBot/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/20CustomChatBot/types/models/enums/ConfigTypes.d.ts b/TypeScript/20CustomChatBot/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/20CustomChatBot/types/models/enums/HideoutAreas.d.ts b/TypeScript/20CustomChatBot/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/20CustomChatBot/types/models/enums/HideoutEventActions.d.ts b/TypeScript/20CustomChatBot/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/20CustomChatBot/types/models/enums/ItemTpl.d.ts b/TypeScript/20CustomChatBot/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/20CustomChatBot/types/models/enums/QuestRewardType.d.ts b/TypeScript/20CustomChatBot/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/20CustomChatBot/types/models/enums/TraderServiceType.d.ts b/TypeScript/20CustomChatBot/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/20CustomChatBot/types/models/enums/Weapons.d.ts b/TypeScript/20CustomChatBot/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/Weapons.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/20CustomChatBot/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/20CustomChatBot/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/20CustomChatBot/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/20CustomChatBot/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/20CustomChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/20CustomChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/20CustomChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/20CustomChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/20CustomChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/20CustomChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/20CustomChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/20CustomChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/20CustomChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/20CustomChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/20CustomChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/20CustomChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/20CustomChatBot/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/20CustomChatBot/types/models/spt/config/IBotConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IBotDurability.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/ILootConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/20CustomChatBot/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/20CustomChatBot/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/20CustomChatBot/types/models/spt/controllers/IBotController.d.ts b/TypeScript/20CustomChatBot/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/20CustomChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/20CustomChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/20CustomChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/20CustomChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/20CustomChatBot/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/20CustomChatBot/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/20CustomChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/20CustomChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/hideout/IHideout.d.ts b/TypeScript/20CustomChatBot/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/20CustomChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/20CustomChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/20CustomChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/templates/ITemplates.d.ts b/TypeScript/20CustomChatBot/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/20CustomChatBot/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/20CustomChatBot/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/20CustomChatBot/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/20CustomChatBot/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/20CustomChatBot/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/20CustomChatBot/types/routers/EventOutputHolder.d.ts b/TypeScript/20CustomChatBot/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/20CustomChatBot/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/20CustomChatBot/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/20CustomChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/20CustomChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/20CustomChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/20CustomChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/20CustomChatBot/types/routers/static/GameStaticRouter.d.ts b/TypeScript/20CustomChatBot/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/20CustomChatBot/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/20CustomChatBot/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/20CustomChatBot/types/servers/SaveServer.d.ts b/TypeScript/20CustomChatBot/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/20CustomChatBot/types/servers/SaveServer.d.ts +++ b/TypeScript/20CustomChatBot/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/20CustomChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/20CustomChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/20CustomChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/20CustomChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/20CustomChatBot/types/services/AirdropService.d.ts b/TypeScript/20CustomChatBot/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/20CustomChatBot/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/20CustomChatBot/types/services/BotEquipmentFilterService.d.ts b/TypeScript/20CustomChatBot/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/20CustomChatBot/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/20CustomChatBot/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/20CustomChatBot/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/20CustomChatBot/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/20CustomChatBot/types/services/BotGenerationCacheService.d.ts b/TypeScript/20CustomChatBot/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/20CustomChatBot/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/20CustomChatBot/types/services/BotNameService.d.ts b/TypeScript/20CustomChatBot/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/20CustomChatBot/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/20CustomChatBot/types/services/BotWeaponModLimitService.d.ts b/TypeScript/20CustomChatBot/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/20CustomChatBot/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/20CustomChatBot/types/services/CircleOfCultistService.d.ts b/TypeScript/20CustomChatBot/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/20CustomChatBot/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/20CustomChatBot/types/services/CustomLocationWaveService.d.ts b/TypeScript/20CustomChatBot/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/20CustomChatBot/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/20CustomChatBot/types/services/DatabaseService.d.ts b/TypeScript/20CustomChatBot/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/20CustomChatBot/types/services/DatabaseService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/20CustomChatBot/types/services/FenceService.d.ts b/TypeScript/20CustomChatBot/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/20CustomChatBot/types/services/FenceService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/20CustomChatBot/types/services/InsuranceService.d.ts b/TypeScript/20CustomChatBot/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/20CustomChatBot/types/services/InsuranceService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/20CustomChatBot/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/20CustomChatBot/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/20CustomChatBot/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/20CustomChatBot/types/services/LocationLifecycleService.d.ts b/TypeScript/20CustomChatBot/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/20CustomChatBot/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/20CustomChatBot/types/services/MailSendService.d.ts b/TypeScript/20CustomChatBot/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/20CustomChatBot/types/services/MailSendService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/20CustomChatBot/types/services/MapMarkerService.d.ts b/TypeScript/20CustomChatBot/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/20CustomChatBot/types/services/MapMarkerService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/20CustomChatBot/types/services/PaymentService.d.ts b/TypeScript/20CustomChatBot/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/20CustomChatBot/types/services/PaymentService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/20CustomChatBot/types/services/PmcChatResponseService.d.ts b/TypeScript/20CustomChatBot/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/20CustomChatBot/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/20CustomChatBot/types/services/ProfileFixerService.d.ts b/TypeScript/20CustomChatBot/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/20CustomChatBot/types/services/ProfileFixerService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/20CustomChatBot/types/services/RagfairOfferService.d.ts b/TypeScript/20CustomChatBot/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/20CustomChatBot/types/services/RagfairOfferService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/20CustomChatBot/types/services/RagfairPriceService.d.ts b/TypeScript/20CustomChatBot/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/20CustomChatBot/types/services/RagfairPriceService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/20CustomChatBot/types/services/RagfairTaxService.d.ts b/TypeScript/20CustomChatBot/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/20CustomChatBot/types/services/RagfairTaxService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/20CustomChatBot/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/20CustomChatBot/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/20CustomChatBot/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/20CustomChatBot/types/services/RepairService.d.ts b/TypeScript/20CustomChatBot/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/20CustomChatBot/types/services/RepairService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/20CustomChatBot/types/services/SeasonalEventService.d.ts b/TypeScript/20CustomChatBot/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/20CustomChatBot/types/services/SeasonalEventService.d.ts +++ b/TypeScript/20CustomChatBot/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/20CustomChatBot/types/services/TraderServicesService.d.ts b/TypeScript/20CustomChatBot/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/20CustomChatBot/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/20CustomChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/20CustomChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/20CustomChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/20CustomChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/20CustomChatBot/types/utils/HashUtil.d.ts b/TypeScript/20CustomChatBot/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/20CustomChatBot/types/utils/HashUtil.d.ts +++ b/TypeScript/20CustomChatBot/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/BotCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/DataCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/GameCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/InraidCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/21CustomCommandoCommand/types/callbacks/LocationCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/MatchCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/TraderCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/21CustomCommandoCommand/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/21CustomCommandoCommand/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/BotController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/BotController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/CustomizationController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/CustomizationController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/GameController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/GameController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/HideoutController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/HideoutController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/InraidController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/InraidController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/21CustomCommandoCommand/types/controllers/InsuranceController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/InsuranceController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/LocationController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/LocationController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/MatchController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/MatchController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/ProfileController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/ProfileController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/QuestController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/QuestController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/RagfairController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/RagfairController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/TradeController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/TradeController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/TraderController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/TraderController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/WeatherController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/WeatherController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/21CustomCommandoCommand/types/controllers/WishlistController.d.ts b/TypeScript/21CustomCommandoCommand/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/21CustomCommandoCommand/types/controllers/WishlistController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/21CustomCommandoCommand/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/generators/BotGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/BotGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/21CustomCommandoCommand/types/generators/BotInventoryGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/21CustomCommandoCommand/types/generators/BotLootGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/21CustomCommandoCommand/types/generators/BotWeaponGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/21CustomCommandoCommand/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/21CustomCommandoCommand/types/generators/LocationGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/21CustomCommandoCommand/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/21CustomCommandoCommand/types/generators/LocationLootGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/21CustomCommandoCommand/types/generators/LootGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/LootGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/21CustomCommandoCommand/types/generators/PlayerScavGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/21CustomCommandoCommand/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/21CustomCommandoCommand/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/21CustomCommandoCommand/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/21CustomCommandoCommand/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/21CustomCommandoCommand/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/21CustomCommandoCommand/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/21CustomCommandoCommand/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/BotHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/BotHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/DialogueHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/HandbookHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/HealthHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/HealthHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/HideoutHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/InRaidHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/InventoryHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/ItemHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/ItemHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/PresetHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/PresetHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/ProfileHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/QuestHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/QuestHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/RagfairHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/RagfairSellHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/RagfairServerHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/RepairHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/RepairHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/SecureContainerHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/TradeHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/TradeHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/TraderAssortHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/TraderHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/TraderHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/21CustomCommandoCommand/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/21CustomCommandoCommand/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/21CustomCommandoCommand/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/21CustomCommandoCommand/types/loaders/BundleLoader.d.ts b/TypeScript/21CustomCommandoCommand/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/21CustomCommandoCommand/types/loaders/BundleLoader.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/IGlobals.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocation.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocationBase.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IItem.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/21CustomCommandoCommand/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/AirdropType.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/AirdropType.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/BaseClasses.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/ConfigTypes.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/HideoutAreas.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/HideoutEventActions.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/ItemTpl.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/QuestRewardType.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/TraderServiceType.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/Weapons.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/Weapons.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/21CustomCommandoCommand/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/21CustomCommandoCommand/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/21CustomCommandoCommand/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/21CustomCommandoCommand/types/models/spt/config/IBotConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBotDurability.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILootConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/controllers/IBotController.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/hideout/IHideout.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/templates/ITemplates.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/21CustomCommandoCommand/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/21CustomCommandoCommand/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/21CustomCommandoCommand/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/21CustomCommandoCommand/types/routers/EventOutputHolder.d.ts b/TypeScript/21CustomCommandoCommand/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/21CustomCommandoCommand/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/21CustomCommandoCommand/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/21CustomCommandoCommand/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/21CustomCommandoCommand/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/21CustomCommandoCommand/types/routers/static/GameStaticRouter.d.ts b/TypeScript/21CustomCommandoCommand/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/21CustomCommandoCommand/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/21CustomCommandoCommand/types/servers/SaveServer.d.ts b/TypeScript/21CustomCommandoCommand/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/21CustomCommandoCommand/types/servers/SaveServer.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/21CustomCommandoCommand/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/21CustomCommandoCommand/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/21CustomCommandoCommand/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/21CustomCommandoCommand/types/services/AirdropService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/21CustomCommandoCommand/types/services/BotEquipmentFilterService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/21CustomCommandoCommand/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/21CustomCommandoCommand/types/services/BotGenerationCacheService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/21CustomCommandoCommand/types/services/BotNameService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/21CustomCommandoCommand/types/services/BotWeaponModLimitService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/21CustomCommandoCommand/types/services/CircleOfCultistService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/21CustomCommandoCommand/types/services/CustomLocationWaveService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/21CustomCommandoCommand/types/services/DatabaseService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/DatabaseService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/21CustomCommandoCommand/types/services/FenceService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/FenceService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/21CustomCommandoCommand/types/services/InsuranceService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/InsuranceService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/21CustomCommandoCommand/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/21CustomCommandoCommand/types/services/LocationLifecycleService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/21CustomCommandoCommand/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/21CustomCommandoCommand/types/services/MailSendService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/MailSendService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/21CustomCommandoCommand/types/services/MapMarkerService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/MapMarkerService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/21CustomCommandoCommand/types/services/PaymentService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/PaymentService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/21CustomCommandoCommand/types/services/PmcChatResponseService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/21CustomCommandoCommand/types/services/ProfileFixerService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/ProfileFixerService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/21CustomCommandoCommand/types/services/RagfairOfferService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/RagfairOfferService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/21CustomCommandoCommand/types/services/RagfairPriceService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/RagfairPriceService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/21CustomCommandoCommand/types/services/RagfairTaxService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/RagfairTaxService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/21CustomCommandoCommand/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/21CustomCommandoCommand/types/services/RepairService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/RepairService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/21CustomCommandoCommand/types/services/SeasonalEventService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/21CustomCommandoCommand/types/services/SeasonalEventService.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/21CustomCommandoCommand/types/services/TraderServicesService.d.ts b/TypeScript/21CustomCommandoCommand/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/21CustomCommandoCommand/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/21CustomCommandoCommand/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/21CustomCommandoCommand/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/21CustomCommandoCommand/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/21CustomCommandoCommand/types/utils/HashUtil.d.ts b/TypeScript/21CustomCommandoCommand/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/21CustomCommandoCommand/types/utils/HashUtil.d.ts +++ b/TypeScript/21CustomCommandoCommand/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/22CustomSptCommand/types/callbacks/BotCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/22CustomSptCommand/types/callbacks/DataCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/22CustomSptCommand/types/callbacks/GameCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/22CustomSptCommand/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/22CustomSptCommand/types/callbacks/InraidCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/22CustomSptCommand/types/callbacks/LocationCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/22CustomSptCommand/types/callbacks/MatchCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/22CustomSptCommand/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/22CustomSptCommand/types/callbacks/TraderCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/22CustomSptCommand/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/22CustomSptCommand/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/22CustomSptCommand/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/22CustomSptCommand/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/22CustomSptCommand/types/controllers/BotController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/BotController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/22CustomSptCommand/types/controllers/CustomizationController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/CustomizationController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/22CustomSptCommand/types/controllers/GameController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/GameController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/22CustomSptCommand/types/controllers/HideoutController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/HideoutController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/22CustomSptCommand/types/controllers/InraidController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/InraidController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/22CustomSptCommand/types/controllers/InsuranceController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/InsuranceController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/22CustomSptCommand/types/controllers/LocationController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/LocationController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/22CustomSptCommand/types/controllers/MatchController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/MatchController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/22CustomSptCommand/types/controllers/ProfileController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/ProfileController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/22CustomSptCommand/types/controllers/QuestController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/QuestController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/22CustomSptCommand/types/controllers/RagfairController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/RagfairController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/22CustomSptCommand/types/controllers/TradeController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/TradeController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/22CustomSptCommand/types/controllers/TraderController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/TraderController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/22CustomSptCommand/types/controllers/WeatherController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/WeatherController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/22CustomSptCommand/types/controllers/WishlistController.d.ts b/TypeScript/22CustomSptCommand/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/22CustomSptCommand/types/controllers/WishlistController.d.ts +++ b/TypeScript/22CustomSptCommand/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/22CustomSptCommand/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/22CustomSptCommand/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/22CustomSptCommand/types/generators/BotGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/22CustomSptCommand/types/generators/BotGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/22CustomSptCommand/types/generators/BotInventoryGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/22CustomSptCommand/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/22CustomSptCommand/types/generators/BotLootGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/22CustomSptCommand/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/22CustomSptCommand/types/generators/BotWeaponGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/22CustomSptCommand/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/22CustomSptCommand/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/22CustomSptCommand/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/22CustomSptCommand/types/generators/LocationGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/22CustomSptCommand/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/22CustomSptCommand/types/generators/LocationLootGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/22CustomSptCommand/types/generators/LootGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/22CustomSptCommand/types/generators/LootGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/22CustomSptCommand/types/generators/PlayerScavGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/22CustomSptCommand/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/22CustomSptCommand/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/22CustomSptCommand/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/22CustomSptCommand/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/22CustomSptCommand/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/22CustomSptCommand/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/22CustomSptCommand/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/22CustomSptCommand/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/22CustomSptCommand/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/22CustomSptCommand/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/22CustomSptCommand/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/22CustomSptCommand/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/22CustomSptCommand/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/22CustomSptCommand/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/22CustomSptCommand/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/22CustomSptCommand/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/22CustomSptCommand/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/BotHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/BotHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/22CustomSptCommand/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/22CustomSptCommand/types/helpers/DialogueHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/22CustomSptCommand/types/helpers/HandbookHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/22CustomSptCommand/types/helpers/HealthHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/HealthHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/22CustomSptCommand/types/helpers/HideoutHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/InRaidHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/InventoryHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/22CustomSptCommand/types/helpers/ItemHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/ItemHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/PresetHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/PresetHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/22CustomSptCommand/types/helpers/ProfileHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/QuestHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/QuestHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/22CustomSptCommand/types/helpers/RagfairHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/22CustomSptCommand/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/RagfairSellHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/RagfairServerHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/RepairHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/RepairHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/22CustomSptCommand/types/helpers/SecureContainerHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/TradeHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/TradeHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/22CustomSptCommand/types/helpers/TraderAssortHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/22CustomSptCommand/types/helpers/TraderHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/TraderHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/22CustomSptCommand/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/22CustomSptCommand/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/22CustomSptCommand/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/22CustomSptCommand/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/22CustomSptCommand/types/loaders/BundleLoader.d.ts b/TypeScript/22CustomSptCommand/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/22CustomSptCommand/types/loaders/BundleLoader.d.ts +++ b/TypeScript/22CustomSptCommand/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/IGlobals.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/ILocation.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/ILocationBase.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IItem.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/22CustomSptCommand/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/22CustomSptCommand/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/22CustomSptCommand/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/22CustomSptCommand/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/22CustomSptCommand/types/models/enums/AirdropType.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/AirdropType.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/22CustomSptCommand/types/models/enums/BaseClasses.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/22CustomSptCommand/types/models/enums/ConfigTypes.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/22CustomSptCommand/types/models/enums/HideoutAreas.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/22CustomSptCommand/types/models/enums/HideoutEventActions.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/22CustomSptCommand/types/models/enums/ItemTpl.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/22CustomSptCommand/types/models/enums/QuestRewardType.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/22CustomSptCommand/types/models/enums/TraderServiceType.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/22CustomSptCommand/types/models/enums/Weapons.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/Weapons.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/22CustomSptCommand/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/22CustomSptCommand/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/22CustomSptCommand/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/22CustomSptCommand/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/22CustomSptCommand/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/22CustomSptCommand/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/22CustomSptCommand/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/22CustomSptCommand/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/22CustomSptCommand/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/22CustomSptCommand/types/models/spt/config/IBotConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IBotDurability.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/ILootConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/22CustomSptCommand/types/models/spt/controllers/IBotController.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/22CustomSptCommand/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/hideout/IHideout.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/22CustomSptCommand/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/templates/ITemplates.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/22CustomSptCommand/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/22CustomSptCommand/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/22CustomSptCommand/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/22CustomSptCommand/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/22CustomSptCommand/types/routers/EventOutputHolder.d.ts b/TypeScript/22CustomSptCommand/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/22CustomSptCommand/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/22CustomSptCommand/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/22CustomSptCommand/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/22CustomSptCommand/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/22CustomSptCommand/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/22CustomSptCommand/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/22CustomSptCommand/types/routers/static/GameStaticRouter.d.ts b/TypeScript/22CustomSptCommand/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/22CustomSptCommand/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/22CustomSptCommand/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/22CustomSptCommand/types/servers/SaveServer.d.ts b/TypeScript/22CustomSptCommand/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/22CustomSptCommand/types/servers/SaveServer.d.ts +++ b/TypeScript/22CustomSptCommand/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/22CustomSptCommand/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/22CustomSptCommand/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/22CustomSptCommand/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/22CustomSptCommand/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/22CustomSptCommand/types/services/AirdropService.d.ts b/TypeScript/22CustomSptCommand/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/22CustomSptCommand/types/services/BotEquipmentFilterService.d.ts b/TypeScript/22CustomSptCommand/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/22CustomSptCommand/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/22CustomSptCommand/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/22CustomSptCommand/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/22CustomSptCommand/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/22CustomSptCommand/types/services/BotGenerationCacheService.d.ts b/TypeScript/22CustomSptCommand/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/22CustomSptCommand/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/22CustomSptCommand/types/services/BotNameService.d.ts b/TypeScript/22CustomSptCommand/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/22CustomSptCommand/types/services/BotWeaponModLimitService.d.ts b/TypeScript/22CustomSptCommand/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/22CustomSptCommand/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/22CustomSptCommand/types/services/CircleOfCultistService.d.ts b/TypeScript/22CustomSptCommand/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/22CustomSptCommand/types/services/CustomLocationWaveService.d.ts b/TypeScript/22CustomSptCommand/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/22CustomSptCommand/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/22CustomSptCommand/types/services/DatabaseService.d.ts b/TypeScript/22CustomSptCommand/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/22CustomSptCommand/types/services/DatabaseService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/22CustomSptCommand/types/services/FenceService.d.ts b/TypeScript/22CustomSptCommand/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/22CustomSptCommand/types/services/FenceService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/22CustomSptCommand/types/services/InsuranceService.d.ts b/TypeScript/22CustomSptCommand/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/22CustomSptCommand/types/services/InsuranceService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/22CustomSptCommand/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/22CustomSptCommand/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/22CustomSptCommand/types/services/LocationLifecycleService.d.ts b/TypeScript/22CustomSptCommand/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/22CustomSptCommand/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/22CustomSptCommand/types/services/MailSendService.d.ts b/TypeScript/22CustomSptCommand/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/22CustomSptCommand/types/services/MailSendService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/22CustomSptCommand/types/services/MapMarkerService.d.ts b/TypeScript/22CustomSptCommand/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/22CustomSptCommand/types/services/MapMarkerService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/22CustomSptCommand/types/services/PaymentService.d.ts b/TypeScript/22CustomSptCommand/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/22CustomSptCommand/types/services/PaymentService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/22CustomSptCommand/types/services/PmcChatResponseService.d.ts b/TypeScript/22CustomSptCommand/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/22CustomSptCommand/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/22CustomSptCommand/types/services/ProfileFixerService.d.ts b/TypeScript/22CustomSptCommand/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/22CustomSptCommand/types/services/ProfileFixerService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/22CustomSptCommand/types/services/RagfairOfferService.d.ts b/TypeScript/22CustomSptCommand/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/22CustomSptCommand/types/services/RagfairOfferService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/22CustomSptCommand/types/services/RagfairPriceService.d.ts b/TypeScript/22CustomSptCommand/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/22CustomSptCommand/types/services/RagfairPriceService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/22CustomSptCommand/types/services/RagfairTaxService.d.ts b/TypeScript/22CustomSptCommand/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/22CustomSptCommand/types/services/RagfairTaxService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/22CustomSptCommand/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/22CustomSptCommand/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/22CustomSptCommand/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/22CustomSptCommand/types/services/RepairService.d.ts b/TypeScript/22CustomSptCommand/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/22CustomSptCommand/types/services/RepairService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/22CustomSptCommand/types/services/SeasonalEventService.d.ts b/TypeScript/22CustomSptCommand/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/22CustomSptCommand/types/services/SeasonalEventService.d.ts +++ b/TypeScript/22CustomSptCommand/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/22CustomSptCommand/types/services/TraderServicesService.d.ts b/TypeScript/22CustomSptCommand/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/22CustomSptCommand/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/22CustomSptCommand/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/22CustomSptCommand/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/22CustomSptCommand/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/22CustomSptCommand/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/22CustomSptCommand/types/utils/HashUtil.d.ts b/TypeScript/22CustomSptCommand/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/22CustomSptCommand/types/utils/HashUtil.d.ts +++ b/TypeScript/22CustomSptCommand/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/BotCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/DataCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/GameCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/InraidCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/LocationCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/MatchCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/TraderCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/23CustomAbstractChatBot/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/BotController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/BotController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/CustomizationController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/CustomizationController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/GameController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/GameController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/HideoutController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/HideoutController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/InraidController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/InraidController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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 543e915..2f45da6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/InsuranceController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/LocationController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/LocationController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/MatchController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/MatchController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/ProfileController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/ProfileController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/QuestController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/QuestController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/RagfairController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/RagfairController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/TradeController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/TradeController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/TraderController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/TraderController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/WeatherController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/WeatherController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/controllers/WishlistController.d.ts b/TypeScript/23CustomAbstractChatBot/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/controllers/WishlistController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotInventoryGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotLootGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/BotWeaponGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], 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 deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/LocationLootGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | 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 953ac3d..37124a0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/LootGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/PlayerScavGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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 index 713a394..17f4fd4 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/23CustomAbstractChatBot/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/weapongen/InventoryMagGen.d.ts b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/BotHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/BotHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/DialogueHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/HandbookHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/HealthHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/HealthHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/HideoutHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/InRaidHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/InventoryHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/ItemHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/ItemHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/PresetHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/PresetHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/ProfileHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/QuestHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/QuestHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSellHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairServerHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/RepairHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/RepairHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/SecureContainerHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/TradeHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/TradeHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/TraderAssortHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/TraderHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/TraderHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/23CustomAbstractChatBot/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/23CustomAbstractChatBot/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/23CustomAbstractChatBot/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/23CustomAbstractChatBot/types/loaders/BundleLoader.d.ts b/TypeScript/23CustomAbstractChatBot/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/loaders/BundleLoader.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IGlobals.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocation.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _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 10f1a57..473648d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } 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 be37845..4def148 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } 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 074a7d6..6d4b0c7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = 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 3883765..97dc708 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; 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 8f60c4f..8139fa1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: 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 6ba9221..a1c9c11 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; 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 54ff191..543a2a9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; 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 0753cff..37e582a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: 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 c5b2da3..145e013 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; 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 40cf004..9e161c8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; 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 3fa86dc..70241bc 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; 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 7b3a6ea..a822d56 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - 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 index 013930a..dbb8c87 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 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/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ 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 459bd28..b345c3e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/AirdropType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/AirdropType.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/BaseClasses.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/ConfigTypes.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/HideoutAreas.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/HideoutEventActions.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemTpl.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/QuestRewardType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/TraderServiceType.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/Weapons.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/Weapons.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/23CustomAbstractChatBot/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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 d438f00..1858e06 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/IBotConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotDurability.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILootConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/controllers/IBotController.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 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/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 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/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], 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 index 57fed47..e93f748 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; 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 index dd4efab..95ed39e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/templates/ITemplates.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/23CustomAbstractChatBot/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/23CustomAbstractChatBot/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/23CustomAbstractChatBot/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/EventOutputHolder.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/23CustomAbstractChatBot/types/routers/static/GameStaticRouter.d.ts b/TypeScript/23CustomAbstractChatBot/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/23CustomAbstractChatBot/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/SaveServer.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/SaveServer.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/23CustomAbstractChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/23CustomAbstractChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/AirdropService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentFilterService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotGenerationCacheService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotNameService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/BotWeaponModLimitService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/23CustomAbstractChatBot/types/services/CircleOfCultistService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/CustomLocationWaveService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from 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 index 711a069..cbe3307 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/DatabaseService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/FenceService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/FenceService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/23CustomAbstractChatBot/types/services/InsuranceService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/InsuranceService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/23CustomAbstractChatBot/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/LocationLifecycleService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/23CustomAbstractChatBot/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/23CustomAbstractChatBot/types/services/MailSendService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/MailSendService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/23CustomAbstractChatBot/types/services/MapMarkerService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/MapMarkerService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/23CustomAbstractChatBot/types/services/PaymentService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/PaymentService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/PmcChatResponseService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/ProfileFixerService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/ProfileFixerService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairOfferService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairOfferService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairPriceService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairPriceService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RagfairTaxService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RagfairTaxService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, 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 bfc099a..3f32776 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/23CustomAbstractChatBot/types/services/RepairService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/RepairService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/23CustomAbstractChatBot/types/services/SeasonalEventService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/services/SeasonalEventService.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/23CustomAbstractChatBot/types/services/TraderServicesService.d.ts b/TypeScript/23CustomAbstractChatBot/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/23CustomAbstractChatBot/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/23CustomAbstractChatBot/types/utils/HashUtil.d.ts b/TypeScript/23CustomAbstractChatBot/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/23CustomAbstractChatBot/types/utils/HashUtil.d.ts +++ b/TypeScript/23CustomAbstractChatBot/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/24WebSocket/types/callbacks/BotCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/24WebSocket/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/24WebSocket/types/callbacks/DataCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/24WebSocket/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/24WebSocket/types/callbacks/GameCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/24WebSocket/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/24WebSocket/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/24WebSocket/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/24WebSocket/types/callbacks/InraidCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/24WebSocket/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/24WebSocket/types/callbacks/LocationCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/24WebSocket/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/24WebSocket/types/callbacks/MatchCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/24WebSocket/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/24WebSocket/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/24WebSocket/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/24WebSocket/types/callbacks/TraderCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/24WebSocket/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/24WebSocket/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/24WebSocket/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/24WebSocket/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/24WebSocket/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/24WebSocket/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/24WebSocket/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/24WebSocket/types/controllers/BotController.d.ts b/TypeScript/24WebSocket/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/24WebSocket/types/controllers/BotController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/24WebSocket/types/controllers/CustomizationController.d.ts b/TypeScript/24WebSocket/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/24WebSocket/types/controllers/CustomizationController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/24WebSocket/types/controllers/GameController.d.ts b/TypeScript/24WebSocket/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/24WebSocket/types/controllers/GameController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/24WebSocket/types/controllers/HideoutController.d.ts b/TypeScript/24WebSocket/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/24WebSocket/types/controllers/HideoutController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/24WebSocket/types/controllers/InraidController.d.ts b/TypeScript/24WebSocket/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/24WebSocket/types/controllers/InraidController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/24WebSocket/types/controllers/InsuranceController.d.ts b/TypeScript/24WebSocket/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/24WebSocket/types/controllers/InsuranceController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/24WebSocket/types/controllers/LocationController.d.ts b/TypeScript/24WebSocket/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/24WebSocket/types/controllers/LocationController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/24WebSocket/types/controllers/MatchController.d.ts b/TypeScript/24WebSocket/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/24WebSocket/types/controllers/MatchController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/24WebSocket/types/controllers/ProfileController.d.ts b/TypeScript/24WebSocket/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/24WebSocket/types/controllers/ProfileController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/24WebSocket/types/controllers/QuestController.d.ts b/TypeScript/24WebSocket/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/24WebSocket/types/controllers/QuestController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/24WebSocket/types/controllers/RagfairController.d.ts b/TypeScript/24WebSocket/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/24WebSocket/types/controllers/RagfairController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/24WebSocket/types/controllers/TradeController.d.ts b/TypeScript/24WebSocket/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/24WebSocket/types/controllers/TradeController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/24WebSocket/types/controllers/TraderController.d.ts b/TypeScript/24WebSocket/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/24WebSocket/types/controllers/TraderController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/24WebSocket/types/controllers/WeatherController.d.ts b/TypeScript/24WebSocket/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/24WebSocket/types/controllers/WeatherController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/24WebSocket/types/controllers/WishlistController.d.ts b/TypeScript/24WebSocket/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/24WebSocket/types/controllers/WishlistController.d.ts +++ b/TypeScript/24WebSocket/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/24WebSocket/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/24WebSocket/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/24WebSocket/types/generators/BotGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/24WebSocket/types/generators/BotGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/24WebSocket/types/generators/BotInventoryGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/24WebSocket/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/24WebSocket/types/generators/BotLootGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/24WebSocket/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/24WebSocket/types/generators/BotWeaponGenerator.d.ts b/TypeScript/24WebSocket/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/24WebSocket/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/24WebSocket/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/24WebSocket/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/24WebSocket/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/24WebSocket/types/generators/LocationGenerator.d.ts b/TypeScript/24WebSocket/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/24WebSocket/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/24WebSocket/types/generators/LocationLootGenerator.d.ts b/TypeScript/24WebSocket/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/24WebSocket/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | 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 953ac3d..37124a0 100644 --- a/TypeScript/24WebSocket/types/generators/LootGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/24WebSocket/types/generators/PlayerScavGenerator.d.ts b/TypeScript/24WebSocket/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/24WebSocket/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/24WebSocket/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/24WebSocket/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/24WebSocket/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/24WebSocket/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/24WebSocket/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/24WebSocket/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/24WebSocket/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/24WebSocket/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/24WebSocket/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/24WebSocket/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/24WebSocket/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/24WebSocket/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/24WebSocket/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/24WebSocket/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/24WebSocket/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/24WebSocket/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/24WebSocket/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/24WebSocket/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/24WebSocket/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/24WebSocket/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/24WebSocket/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/24WebSocket/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/24WebSocket/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/24WebSocket/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/24WebSocket/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/24WebSocket/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/24WebSocket/types/helpers/BotHelper.d.ts b/TypeScript/24WebSocket/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/24WebSocket/types/helpers/BotHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/24WebSocket/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/24WebSocket/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/24WebSocket/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/24WebSocket/types/helpers/DialogueHelper.d.ts b/TypeScript/24WebSocket/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/24WebSocket/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/24WebSocket/types/helpers/HandbookHelper.d.ts b/TypeScript/24WebSocket/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/24WebSocket/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/24WebSocket/types/helpers/HealthHelper.d.ts b/TypeScript/24WebSocket/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/24WebSocket/types/helpers/HealthHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/24WebSocket/types/helpers/HideoutHelper.d.ts b/TypeScript/24WebSocket/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/24WebSocket/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/24WebSocket/types/helpers/InRaidHelper.d.ts b/TypeScript/24WebSocket/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/24WebSocket/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/24WebSocket/types/helpers/InventoryHelper.d.ts b/TypeScript/24WebSocket/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/24WebSocket/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/24WebSocket/types/helpers/ItemHelper.d.ts b/TypeScript/24WebSocket/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/24WebSocket/types/helpers/ItemHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/24WebSocket/types/helpers/PresetHelper.d.ts b/TypeScript/24WebSocket/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/24WebSocket/types/helpers/PresetHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/24WebSocket/types/helpers/ProfileHelper.d.ts b/TypeScript/24WebSocket/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/24WebSocket/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/24WebSocket/types/helpers/QuestHelper.d.ts b/TypeScript/24WebSocket/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/24WebSocket/types/helpers/QuestHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/24WebSocket/types/helpers/RagfairHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/24WebSocket/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/24WebSocket/types/helpers/RagfairSellHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/24WebSocket/types/helpers/RagfairServerHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/24WebSocket/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/24WebSocket/types/helpers/RepairHelper.d.ts b/TypeScript/24WebSocket/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/24WebSocket/types/helpers/RepairHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/24WebSocket/types/helpers/SecureContainerHelper.d.ts b/TypeScript/24WebSocket/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/24WebSocket/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/24WebSocket/types/helpers/TradeHelper.d.ts b/TypeScript/24WebSocket/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/24WebSocket/types/helpers/TradeHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/24WebSocket/types/helpers/TraderAssortHelper.d.ts b/TypeScript/24WebSocket/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/24WebSocket/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/24WebSocket/types/helpers/TraderHelper.d.ts b/TypeScript/24WebSocket/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/24WebSocket/types/helpers/TraderHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/24WebSocket/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/24WebSocket/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/24WebSocket/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/24WebSocket/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/24WebSocket/types/loaders/BundleLoader.d.ts b/TypeScript/24WebSocket/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/24WebSocket/types/loaders/BundleLoader.d.ts +++ b/TypeScript/24WebSocket/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/24WebSocket/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/24WebSocket/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/24WebSocket/types/models/eft/common/IGlobals.d.ts b/TypeScript/24WebSocket/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 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/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/ILocation.d.ts b/TypeScript/24WebSocket/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 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/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/ILocationBase.d.ts b/TypeScript/24WebSocket/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/24WebSocket/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/24WebSocket/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/24WebSocket/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: 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 be37845..4def148 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: 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 074a7d6..6d4b0c7 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; 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 3883765..97dc708 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IItem.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/24WebSocket/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; 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 6ba9221..a1c9c11 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; 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 54ff191..543a2a9 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: 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 0753cff..37e582a 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } 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 c5b2da3..145e013 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; 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 40cf004..9e161c8 100644 --- a/TypeScript/24WebSocket/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/24WebSocket/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/24WebSocket/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/24WebSocket/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/24WebSocket/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/24WebSocket/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/24WebSocket/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/24WebSocket/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/24WebSocket/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/24WebSocket/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/24WebSocket/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/24WebSocket/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/24WebSocket/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/24WebSocket/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/24WebSocket/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/24WebSocket/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/24WebSocket/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/24WebSocket/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/24WebSocket/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/24WebSocket/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/24WebSocket/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/24WebSocket/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/24WebSocket/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 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/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/24WebSocket/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/24WebSocket/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/24WebSocket/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/24WebSocket/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/24WebSocket/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/24WebSocket/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/24WebSocket/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/24WebSocket/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/24WebSocket/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/24WebSocket/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/24WebSocket/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/24WebSocket/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/24WebSocket/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/24WebSocket/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/24WebSocket/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/24WebSocket/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/24WebSocket/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/24WebSocket/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/24WebSocket/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/24WebSocket/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/24WebSocket/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/24WebSocket/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/24WebSocket/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/24WebSocket/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/24WebSocket/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/24WebSocket/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/24WebSocket/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/24WebSocket/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/24WebSocket/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/24WebSocket/types/models/enums/AirdropType.d.ts b/TypeScript/24WebSocket/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/24WebSocket/types/models/enums/AirdropType.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/24WebSocket/types/models/enums/BaseClasses.d.ts b/TypeScript/24WebSocket/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/24WebSocket/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/24WebSocket/types/models/enums/ConfigTypes.d.ts b/TypeScript/24WebSocket/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/24WebSocket/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/24WebSocket/types/models/enums/HideoutAreas.d.ts b/TypeScript/24WebSocket/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/24WebSocket/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/24WebSocket/types/models/enums/HideoutEventActions.d.ts b/TypeScript/24WebSocket/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/24WebSocket/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/24WebSocket/types/models/enums/ItemTpl.d.ts b/TypeScript/24WebSocket/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/24WebSocket/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/24WebSocket/types/models/enums/QuestRewardType.d.ts b/TypeScript/24WebSocket/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/24WebSocket/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/24WebSocket/types/models/enums/TraderServiceType.d.ts b/TypeScript/24WebSocket/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/24WebSocket/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/24WebSocket/types/models/enums/Weapons.d.ts b/TypeScript/24WebSocket/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/24WebSocket/types/models/enums/Weapons.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/24WebSocket/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/24WebSocket/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/24WebSocket/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/24WebSocket/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/24WebSocket/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/24WebSocket/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/24WebSocket/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/24WebSocket/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/24WebSocket/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/24WebSocket/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/24WebSocket/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/24WebSocket/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/24WebSocket/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/24WebSocket/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/24WebSocket/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/24WebSocket/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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 d438f00..1858e06 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/24WebSocket/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/24WebSocket/types/models/spt/config/IBotConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IBotDurability.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/24WebSocket/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/24WebSocket/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/24WebSocket/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/24WebSocket/types/models/spt/config/ILootConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/24WebSocket/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/24WebSocket/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/24WebSocket/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/24WebSocket/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/24WebSocket/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/24WebSocket/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/24WebSocket/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/24WebSocket/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/24WebSocket/types/models/spt/controllers/IBotController.d.ts b/TypeScript/24WebSocket/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/24WebSocket/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/24WebSocket/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/24WebSocket/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/24WebSocket/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/24WebSocket/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/24WebSocket/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/24WebSocket/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/24WebSocket/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/24WebSocket/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 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/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, 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 2df98e7..8090538 100644 --- a/TypeScript/24WebSocket/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/24WebSocket/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/24WebSocket/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 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/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/24WebSocket/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/24WebSocket/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 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/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], 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 index 57fed47..e93f748 100644 --- a/TypeScript/24WebSocket/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; 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 index dd4efab..95ed39e 100644 --- a/TypeScript/24WebSocket/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/24WebSocket/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/24WebSocket/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/24WebSocket/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/24WebSocket/types/models/spt/templates/ITemplates.d.ts b/TypeScript/24WebSocket/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/24WebSocket/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/24WebSocket/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/24WebSocket/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/24WebSocket/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/24WebSocket/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/24WebSocket/types/routers/EventOutputHolder.d.ts b/TypeScript/24WebSocket/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/24WebSocket/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/24WebSocket/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/24WebSocket/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/24WebSocket/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/24WebSocket/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/24WebSocket/types/routers/static/GameStaticRouter.d.ts b/TypeScript/24WebSocket/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/24WebSocket/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/24WebSocket/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/24WebSocket/types/servers/SaveServer.d.ts b/TypeScript/24WebSocket/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/24WebSocket/types/servers/SaveServer.d.ts +++ b/TypeScript/24WebSocket/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/24WebSocket/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/24WebSocket/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/24WebSocket/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/24WebSocket/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/24WebSocket/types/services/AirdropService.d.ts b/TypeScript/24WebSocket/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/24WebSocket/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/24WebSocket/types/services/BotEquipmentFilterService.d.ts b/TypeScript/24WebSocket/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/24WebSocket/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/24WebSocket/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/24WebSocket/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/24WebSocket/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/24WebSocket/types/services/BotGenerationCacheService.d.ts b/TypeScript/24WebSocket/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/24WebSocket/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/24WebSocket/types/services/BotNameService.d.ts b/TypeScript/24WebSocket/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/24WebSocket/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/24WebSocket/types/services/BotWeaponModLimitService.d.ts b/TypeScript/24WebSocket/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/24WebSocket/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/24WebSocket/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/24WebSocket/types/services/CircleOfCultistService.d.ts b/TypeScript/24WebSocket/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/24WebSocket/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/24WebSocket/types/services/CustomLocationWaveService.d.ts b/TypeScript/24WebSocket/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/24WebSocket/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/24WebSocket/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from 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 index 711a069..cbe3307 100644 --- a/TypeScript/24WebSocket/types/services/DatabaseService.d.ts +++ b/TypeScript/24WebSocket/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/24WebSocket/types/services/FenceService.d.ts b/TypeScript/24WebSocket/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/24WebSocket/types/services/FenceService.d.ts +++ b/TypeScript/24WebSocket/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): 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 d22e4c5..8b7b1b3 100644 --- a/TypeScript/24WebSocket/types/services/InsuranceService.d.ts +++ b/TypeScript/24WebSocket/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/24WebSocket/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/24WebSocket/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/24WebSocket/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/24WebSocket/types/services/LocationLifecycleService.d.ts b/TypeScript/24WebSocket/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/24WebSocket/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/24WebSocket/types/services/MailSendService.d.ts b/TypeScript/24WebSocket/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/24WebSocket/types/services/MailSendService.d.ts +++ b/TypeScript/24WebSocket/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/24WebSocket/types/services/MapMarkerService.d.ts b/TypeScript/24WebSocket/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/24WebSocket/types/services/MapMarkerService.d.ts +++ b/TypeScript/24WebSocket/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/24WebSocket/types/services/PaymentService.d.ts b/TypeScript/24WebSocket/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/24WebSocket/types/services/PaymentService.d.ts +++ b/TypeScript/24WebSocket/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/24WebSocket/types/services/PmcChatResponseService.d.ts b/TypeScript/24WebSocket/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/24WebSocket/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/24WebSocket/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/24WebSocket/types/services/ProfileFixerService.d.ts b/TypeScript/24WebSocket/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/24WebSocket/types/services/ProfileFixerService.d.ts +++ b/TypeScript/24WebSocket/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/24WebSocket/types/services/RagfairOfferService.d.ts b/TypeScript/24WebSocket/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/24WebSocket/types/services/RagfairOfferService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/24WebSocket/types/services/RagfairPriceService.d.ts b/TypeScript/24WebSocket/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/24WebSocket/types/services/RagfairPriceService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/24WebSocket/types/services/RagfairTaxService.d.ts b/TypeScript/24WebSocket/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/24WebSocket/types/services/RagfairTaxService.d.ts +++ b/TypeScript/24WebSocket/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/24WebSocket/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/24WebSocket/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/24WebSocket/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/24WebSocket/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/24WebSocket/types/services/RepairService.d.ts b/TypeScript/24WebSocket/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/24WebSocket/types/services/RepairService.d.ts +++ b/TypeScript/24WebSocket/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/24WebSocket/types/services/SeasonalEventService.d.ts b/TypeScript/24WebSocket/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/24WebSocket/types/services/SeasonalEventService.d.ts +++ b/TypeScript/24WebSocket/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/24WebSocket/types/services/TraderServicesService.d.ts b/TypeScript/24WebSocket/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/24WebSocket/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/24WebSocket/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/24WebSocket/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/24WebSocket/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/24WebSocket/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/24WebSocket/types/utils/HashUtil.d.ts b/TypeScript/24WebSocket/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/24WebSocket/types/utils/HashUtil.d.ts +++ b/TypeScript/24WebSocket/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/2EditDatabase/types/callbacks/BotCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/2EditDatabase/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/2EditDatabase/types/callbacks/DataCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/2EditDatabase/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/2EditDatabase/types/callbacks/GameCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/2EditDatabase/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/2EditDatabase/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/2EditDatabase/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/2EditDatabase/types/callbacks/InraidCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/2EditDatabase/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/2EditDatabase/types/callbacks/LocationCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/2EditDatabase/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/2EditDatabase/types/callbacks/MatchCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/2EditDatabase/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/2EditDatabase/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/2EditDatabase/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/2EditDatabase/types/callbacks/TraderCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/2EditDatabase/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/2EditDatabase/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/2EditDatabase/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/2EditDatabase/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/2EditDatabase/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/2EditDatabase/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/2EditDatabase/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/2EditDatabase/types/controllers/BotController.d.ts b/TypeScript/2EditDatabase/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/2EditDatabase/types/controllers/BotController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/2EditDatabase/types/controllers/CustomizationController.d.ts b/TypeScript/2EditDatabase/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/2EditDatabase/types/controllers/CustomizationController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/2EditDatabase/types/controllers/GameController.d.ts b/TypeScript/2EditDatabase/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/2EditDatabase/types/controllers/GameController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/2EditDatabase/types/controllers/HideoutController.d.ts b/TypeScript/2EditDatabase/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/2EditDatabase/types/controllers/HideoutController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/2EditDatabase/types/controllers/InraidController.d.ts b/TypeScript/2EditDatabase/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/2EditDatabase/types/controllers/InraidController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/2EditDatabase/types/controllers/InsuranceController.d.ts b/TypeScript/2EditDatabase/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/2EditDatabase/types/controllers/InsuranceController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/2EditDatabase/types/controllers/LocationController.d.ts b/TypeScript/2EditDatabase/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/2EditDatabase/types/controllers/LocationController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/2EditDatabase/types/controllers/MatchController.d.ts b/TypeScript/2EditDatabase/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/2EditDatabase/types/controllers/MatchController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/2EditDatabase/types/controllers/ProfileController.d.ts b/TypeScript/2EditDatabase/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/2EditDatabase/types/controllers/ProfileController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/2EditDatabase/types/controllers/QuestController.d.ts b/TypeScript/2EditDatabase/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/2EditDatabase/types/controllers/QuestController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/2EditDatabase/types/controllers/RagfairController.d.ts b/TypeScript/2EditDatabase/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/2EditDatabase/types/controllers/RagfairController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/2EditDatabase/types/controllers/TradeController.d.ts b/TypeScript/2EditDatabase/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/2EditDatabase/types/controllers/TradeController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/2EditDatabase/types/controllers/TraderController.d.ts b/TypeScript/2EditDatabase/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/2EditDatabase/types/controllers/TraderController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/2EditDatabase/types/controllers/WeatherController.d.ts b/TypeScript/2EditDatabase/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/2EditDatabase/types/controllers/WeatherController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/2EditDatabase/types/controllers/WishlistController.d.ts b/TypeScript/2EditDatabase/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/2EditDatabase/types/controllers/WishlistController.d.ts +++ b/TypeScript/2EditDatabase/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/2EditDatabase/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/2EditDatabase/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/2EditDatabase/types/generators/BotGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/2EditDatabase/types/generators/BotGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/2EditDatabase/types/generators/BotInventoryGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/2EditDatabase/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/2EditDatabase/types/generators/BotLootGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/2EditDatabase/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/2EditDatabase/types/generators/BotWeaponGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/2EditDatabase/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/2EditDatabase/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/2EditDatabase/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/2EditDatabase/types/generators/LocationGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/2EditDatabase/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/2EditDatabase/types/generators/LocationLootGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/2EditDatabase/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/2EditDatabase/types/generators/LootGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/2EditDatabase/types/generators/LootGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/2EditDatabase/types/generators/PlayerScavGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/2EditDatabase/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/2EditDatabase/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/2EditDatabase/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/2EditDatabase/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/2EditDatabase/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/2EditDatabase/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/2EditDatabase/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/2EditDatabase/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/2EditDatabase/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/2EditDatabase/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/2EditDatabase/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/2EditDatabase/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/2EditDatabase/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/2EditDatabase/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/2EditDatabase/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/2EditDatabase/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/2EditDatabase/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/2EditDatabase/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/2EditDatabase/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/2EditDatabase/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/2EditDatabase/types/helpers/BotHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/2EditDatabase/types/helpers/BotHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/2EditDatabase/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/2EditDatabase/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/2EditDatabase/types/helpers/DialogueHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/2EditDatabase/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/2EditDatabase/types/helpers/HandbookHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/2EditDatabase/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/2EditDatabase/types/helpers/HealthHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/2EditDatabase/types/helpers/HealthHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/2EditDatabase/types/helpers/HideoutHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/2EditDatabase/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/2EditDatabase/types/helpers/InRaidHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/2EditDatabase/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/2EditDatabase/types/helpers/InventoryHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/2EditDatabase/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/2EditDatabase/types/helpers/ItemHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/2EditDatabase/types/helpers/ItemHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/2EditDatabase/types/helpers/PresetHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/2EditDatabase/types/helpers/PresetHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/2EditDatabase/types/helpers/ProfileHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/2EditDatabase/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/2EditDatabase/types/helpers/QuestHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/2EditDatabase/types/helpers/QuestHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/2EditDatabase/types/helpers/RagfairHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/2EditDatabase/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/2EditDatabase/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/2EditDatabase/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/2EditDatabase/types/helpers/RagfairSellHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/2EditDatabase/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/2EditDatabase/types/helpers/RagfairServerHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/2EditDatabase/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/2EditDatabase/types/helpers/RepairHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/2EditDatabase/types/helpers/RepairHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/2EditDatabase/types/helpers/SecureContainerHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/2EditDatabase/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/2EditDatabase/types/helpers/TradeHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/2EditDatabase/types/helpers/TradeHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/2EditDatabase/types/helpers/TraderAssortHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/2EditDatabase/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/2EditDatabase/types/helpers/TraderHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/2EditDatabase/types/helpers/TraderHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/2EditDatabase/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/2EditDatabase/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/2EditDatabase/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/2EditDatabase/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/2EditDatabase/types/loaders/BundleLoader.d.ts b/TypeScript/2EditDatabase/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/2EditDatabase/types/loaders/BundleLoader.d.ts +++ b/TypeScript/2EditDatabase/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/2EditDatabase/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/2EditDatabase/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/2EditDatabase/types/models/eft/common/IGlobals.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/ILocation.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/ILocationBase.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/IItem.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/2EditDatabase/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/2EditDatabase/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/2EditDatabase/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/2EditDatabase/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/2EditDatabase/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/2EditDatabase/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/2EditDatabase/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/2EditDatabase/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/2EditDatabase/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/2EditDatabase/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/2EditDatabase/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/2EditDatabase/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/2EditDatabase/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/2EditDatabase/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/2EditDatabase/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/2EditDatabase/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/2EditDatabase/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/2EditDatabase/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/2EditDatabase/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/2EditDatabase/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/2EditDatabase/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/2EditDatabase/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/2EditDatabase/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/2EditDatabase/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/2EditDatabase/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/2EditDatabase/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/2EditDatabase/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/2EditDatabase/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/2EditDatabase/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/2EditDatabase/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/2EditDatabase/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/2EditDatabase/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/2EditDatabase/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/2EditDatabase/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/2EditDatabase/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/2EditDatabase/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/2EditDatabase/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/2EditDatabase/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/2EditDatabase/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/2EditDatabase/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/2EditDatabase/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/2EditDatabase/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/2EditDatabase/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/2EditDatabase/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/2EditDatabase/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/2EditDatabase/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/2EditDatabase/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/2EditDatabase/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/2EditDatabase/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/2EditDatabase/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/2EditDatabase/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/2EditDatabase/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/2EditDatabase/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/2EditDatabase/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/2EditDatabase/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/2EditDatabase/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/2EditDatabase/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/2EditDatabase/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/2EditDatabase/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/2EditDatabase/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/2EditDatabase/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/2EditDatabase/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/2EditDatabase/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/2EditDatabase/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/2EditDatabase/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/2EditDatabase/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/2EditDatabase/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/2EditDatabase/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/2EditDatabase/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/2EditDatabase/types/models/enums/AirdropType.d.ts b/TypeScript/2EditDatabase/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/2EditDatabase/types/models/enums/AirdropType.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/2EditDatabase/types/models/enums/BaseClasses.d.ts b/TypeScript/2EditDatabase/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/2EditDatabase/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/2EditDatabase/types/models/enums/ConfigTypes.d.ts b/TypeScript/2EditDatabase/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/2EditDatabase/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/2EditDatabase/types/models/enums/HideoutAreas.d.ts b/TypeScript/2EditDatabase/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/2EditDatabase/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/2EditDatabase/types/models/enums/HideoutEventActions.d.ts b/TypeScript/2EditDatabase/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/2EditDatabase/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/2EditDatabase/types/models/enums/ItemTpl.d.ts b/TypeScript/2EditDatabase/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/2EditDatabase/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/2EditDatabase/types/models/enums/QuestRewardType.d.ts b/TypeScript/2EditDatabase/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/2EditDatabase/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/2EditDatabase/types/models/enums/TraderServiceType.d.ts b/TypeScript/2EditDatabase/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/2EditDatabase/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/2EditDatabase/types/models/enums/Weapons.d.ts b/TypeScript/2EditDatabase/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/2EditDatabase/types/models/enums/Weapons.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/2EditDatabase/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/2EditDatabase/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/2EditDatabase/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/2EditDatabase/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/2EditDatabase/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/2EditDatabase/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/2EditDatabase/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/2EditDatabase/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/2EditDatabase/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/2EditDatabase/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/2EditDatabase/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/2EditDatabase/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/2EditDatabase/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/2EditDatabase/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/2EditDatabase/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/2EditDatabase/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/2EditDatabase/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/2EditDatabase/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/2EditDatabase/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/2EditDatabase/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/2EditDatabase/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/2EditDatabase/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/2EditDatabase/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/2EditDatabase/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/2EditDatabase/types/models/spt/config/IBotConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IBotDurability.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/2EditDatabase/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/2EditDatabase/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/2EditDatabase/types/models/spt/config/ILootConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/2EditDatabase/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/2EditDatabase/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/2EditDatabase/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/2EditDatabase/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/2EditDatabase/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/2EditDatabase/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/2EditDatabase/types/models/spt/controllers/IBotController.d.ts b/TypeScript/2EditDatabase/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/2EditDatabase/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/2EditDatabase/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/2EditDatabase/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/2EditDatabase/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/2EditDatabase/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/2EditDatabase/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/2EditDatabase/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/2EditDatabase/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/2EditDatabase/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/2EditDatabase/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/2EditDatabase/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/2EditDatabase/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/2EditDatabase/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/2EditDatabase/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/2EditDatabase/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/2EditDatabase/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/2EditDatabase/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/2EditDatabase/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/2EditDatabase/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/2EditDatabase/types/models/spt/hideout/IHideout.d.ts b/TypeScript/2EditDatabase/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/2EditDatabase/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/2EditDatabase/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/2EditDatabase/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/2EditDatabase/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/2EditDatabase/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/2EditDatabase/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/2EditDatabase/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/2EditDatabase/types/models/spt/templates/ITemplates.d.ts b/TypeScript/2EditDatabase/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/2EditDatabase/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/2EditDatabase/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/2EditDatabase/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/2EditDatabase/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/2EditDatabase/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/2EditDatabase/types/routers/EventOutputHolder.d.ts b/TypeScript/2EditDatabase/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/2EditDatabase/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/2EditDatabase/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/2EditDatabase/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/2EditDatabase/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/2EditDatabase/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/2EditDatabase/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/2EditDatabase/types/routers/static/GameStaticRouter.d.ts b/TypeScript/2EditDatabase/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/2EditDatabase/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/2EditDatabase/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/2EditDatabase/types/servers/SaveServer.d.ts b/TypeScript/2EditDatabase/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/2EditDatabase/types/servers/SaveServer.d.ts +++ b/TypeScript/2EditDatabase/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/2EditDatabase/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/2EditDatabase/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/2EditDatabase/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/2EditDatabase/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/2EditDatabase/types/services/AirdropService.d.ts b/TypeScript/2EditDatabase/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/2EditDatabase/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/2EditDatabase/types/services/BotEquipmentFilterService.d.ts b/TypeScript/2EditDatabase/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/2EditDatabase/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/2EditDatabase/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/2EditDatabase/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/2EditDatabase/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/2EditDatabase/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/2EditDatabase/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/2EditDatabase/types/services/BotGenerationCacheService.d.ts b/TypeScript/2EditDatabase/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/2EditDatabase/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/2EditDatabase/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/2EditDatabase/types/services/BotNameService.d.ts b/TypeScript/2EditDatabase/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/2EditDatabase/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/2EditDatabase/types/services/BotWeaponModLimitService.d.ts b/TypeScript/2EditDatabase/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/2EditDatabase/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/2EditDatabase/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/2EditDatabase/types/services/CircleOfCultistService.d.ts b/TypeScript/2EditDatabase/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/2EditDatabase/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/2EditDatabase/types/services/CustomLocationWaveService.d.ts b/TypeScript/2EditDatabase/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/2EditDatabase/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/2EditDatabase/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/2EditDatabase/types/services/DatabaseService.d.ts b/TypeScript/2EditDatabase/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/2EditDatabase/types/services/DatabaseService.d.ts +++ b/TypeScript/2EditDatabase/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/2EditDatabase/types/services/FenceService.d.ts b/TypeScript/2EditDatabase/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/2EditDatabase/types/services/FenceService.d.ts +++ b/TypeScript/2EditDatabase/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/2EditDatabase/types/services/InsuranceService.d.ts b/TypeScript/2EditDatabase/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/2EditDatabase/types/services/InsuranceService.d.ts +++ b/TypeScript/2EditDatabase/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/2EditDatabase/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/2EditDatabase/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/2EditDatabase/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/2EditDatabase/types/services/LocationLifecycleService.d.ts b/TypeScript/2EditDatabase/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/2EditDatabase/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/2EditDatabase/types/services/MailSendService.d.ts b/TypeScript/2EditDatabase/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/2EditDatabase/types/services/MailSendService.d.ts +++ b/TypeScript/2EditDatabase/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/2EditDatabase/types/services/MapMarkerService.d.ts b/TypeScript/2EditDatabase/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/2EditDatabase/types/services/MapMarkerService.d.ts +++ b/TypeScript/2EditDatabase/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/2EditDatabase/types/services/PaymentService.d.ts b/TypeScript/2EditDatabase/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/2EditDatabase/types/services/PaymentService.d.ts +++ b/TypeScript/2EditDatabase/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/2EditDatabase/types/services/PmcChatResponseService.d.ts b/TypeScript/2EditDatabase/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/2EditDatabase/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/2EditDatabase/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/2EditDatabase/types/services/ProfileFixerService.d.ts b/TypeScript/2EditDatabase/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/2EditDatabase/types/services/ProfileFixerService.d.ts +++ b/TypeScript/2EditDatabase/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/2EditDatabase/types/services/RagfairOfferService.d.ts b/TypeScript/2EditDatabase/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/2EditDatabase/types/services/RagfairOfferService.d.ts +++ b/TypeScript/2EditDatabase/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/2EditDatabase/types/services/RagfairPriceService.d.ts b/TypeScript/2EditDatabase/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/2EditDatabase/types/services/RagfairPriceService.d.ts +++ b/TypeScript/2EditDatabase/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/2EditDatabase/types/services/RagfairTaxService.d.ts b/TypeScript/2EditDatabase/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/2EditDatabase/types/services/RagfairTaxService.d.ts +++ b/TypeScript/2EditDatabase/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/2EditDatabase/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/2EditDatabase/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/2EditDatabase/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/2EditDatabase/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/2EditDatabase/types/services/RepairService.d.ts b/TypeScript/2EditDatabase/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/2EditDatabase/types/services/RepairService.d.ts +++ b/TypeScript/2EditDatabase/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/2EditDatabase/types/services/SeasonalEventService.d.ts b/TypeScript/2EditDatabase/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/2EditDatabase/types/services/SeasonalEventService.d.ts +++ b/TypeScript/2EditDatabase/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/2EditDatabase/types/services/TraderServicesService.d.ts b/TypeScript/2EditDatabase/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/2EditDatabase/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/2EditDatabase/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/2EditDatabase/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/2EditDatabase/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/2EditDatabase/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/2EditDatabase/types/utils/HashUtil.d.ts b/TypeScript/2EditDatabase/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/2EditDatabase/types/utils/HashUtil.d.ts +++ b/TypeScript/2EditDatabase/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/BotCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/DataCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/GameCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/InraidCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/3GetSptConfigFile/types/callbacks/LocationCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/MatchCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/TraderCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/3GetSptConfigFile/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/3GetSptConfigFile/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/3GetSptConfigFile/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/3GetSptConfigFile/types/controllers/BotController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/BotController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/3GetSptConfigFile/types/controllers/CustomizationController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/CustomizationController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/3GetSptConfigFile/types/controllers/GameController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/GameController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/3GetSptConfigFile/types/controllers/HideoutController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/HideoutController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/3GetSptConfigFile/types/controllers/InraidController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/InraidController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/3GetSptConfigFile/types/controllers/InsuranceController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/InsuranceController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/3GetSptConfigFile/types/controllers/LocationController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/LocationController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/3GetSptConfigFile/types/controllers/MatchController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/MatchController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/3GetSptConfigFile/types/controllers/ProfileController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/ProfileController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/3GetSptConfigFile/types/controllers/QuestController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/QuestController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/3GetSptConfigFile/types/controllers/RagfairController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/RagfairController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/3GetSptConfigFile/types/controllers/TradeController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/TradeController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/3GetSptConfigFile/types/controllers/TraderController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/TraderController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/3GetSptConfigFile/types/controllers/WeatherController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/WeatherController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/3GetSptConfigFile/types/controllers/WishlistController.d.ts b/TypeScript/3GetSptConfigFile/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/3GetSptConfigFile/types/controllers/WishlistController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/3GetSptConfigFile/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/3GetSptConfigFile/types/generators/BotGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/BotGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/3GetSptConfigFile/types/generators/BotInventoryGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/3GetSptConfigFile/types/generators/BotLootGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/3GetSptConfigFile/types/generators/BotWeaponGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/3GetSptConfigFile/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/3GetSptConfigFile/types/generators/LocationGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/3GetSptConfigFile/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/3GetSptConfigFile/types/generators/LocationLootGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/3GetSptConfigFile/types/generators/LootGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/LootGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/3GetSptConfigFile/types/generators/PlayerScavGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/3GetSptConfigFile/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/3GetSptConfigFile/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/3GetSptConfigFile/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/3GetSptConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/3GetSptConfigFile/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/3GetSptConfigFile/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/3GetSptConfigFile/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/3GetSptConfigFile/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/3GetSptConfigFile/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/3GetSptConfigFile/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/BotHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/BotHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/3GetSptConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/3GetSptConfigFile/types/helpers/DialogueHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/3GetSptConfigFile/types/helpers/HandbookHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/3GetSptConfigFile/types/helpers/HealthHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/HealthHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/3GetSptConfigFile/types/helpers/HideoutHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/InRaidHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/InventoryHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/3GetSptConfigFile/types/helpers/ItemHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/ItemHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/PresetHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/PresetHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/3GetSptConfigFile/types/helpers/ProfileHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/QuestHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/QuestHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/3GetSptConfigFile/types/helpers/RagfairHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/3GetSptConfigFile/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/RagfairSellHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/RagfairServerHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/RepairHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/RepairHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/3GetSptConfigFile/types/helpers/SecureContainerHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/TradeHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/TradeHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/3GetSptConfigFile/types/helpers/TraderAssortHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/3GetSptConfigFile/types/helpers/TraderHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/TraderHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/3GetSptConfigFile/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/3GetSptConfigFile/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/3GetSptConfigFile/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/3GetSptConfigFile/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/3GetSptConfigFile/types/loaders/BundleLoader.d.ts b/TypeScript/3GetSptConfigFile/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/3GetSptConfigFile/types/loaders/BundleLoader.d.ts +++ b/TypeScript/3GetSptConfigFile/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/IGlobals.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocation.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocationBase.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IItem.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/3GetSptConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/3GetSptConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/AirdropType.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/AirdropType.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/BaseClasses.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/ConfigTypes.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/HideoutAreas.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/HideoutEventActions.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/ItemTpl.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/QuestRewardType.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/TraderServiceType.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/Weapons.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/Weapons.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/3GetSptConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/3GetSptConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/3GetSptConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/3GetSptConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/3GetSptConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/3GetSptConfigFile/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/3GetSptConfigFile/types/models/spt/config/IBotConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IBotDurability.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/ILootConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/controllers/IBotController.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/hideout/IHideout.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/templates/ITemplates.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/3GetSptConfigFile/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/3GetSptConfigFile/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/3GetSptConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/3GetSptConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/3GetSptConfigFile/types/routers/EventOutputHolder.d.ts b/TypeScript/3GetSptConfigFile/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/3GetSptConfigFile/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/3GetSptConfigFile/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/3GetSptConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/3GetSptConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/3GetSptConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/3GetSptConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/3GetSptConfigFile/types/routers/static/GameStaticRouter.d.ts b/TypeScript/3GetSptConfigFile/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/3GetSptConfigFile/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/3GetSptConfigFile/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/3GetSptConfigFile/types/servers/SaveServer.d.ts b/TypeScript/3GetSptConfigFile/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/3GetSptConfigFile/types/servers/SaveServer.d.ts +++ b/TypeScript/3GetSptConfigFile/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/3GetSptConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/3GetSptConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/3GetSptConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/3GetSptConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/3GetSptConfigFile/types/services/AirdropService.d.ts b/TypeScript/3GetSptConfigFile/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/3GetSptConfigFile/types/services/BotEquipmentFilterService.d.ts b/TypeScript/3GetSptConfigFile/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/3GetSptConfigFile/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/3GetSptConfigFile/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/3GetSptConfigFile/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/3GetSptConfigFile/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/3GetSptConfigFile/types/services/BotGenerationCacheService.d.ts b/TypeScript/3GetSptConfigFile/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/3GetSptConfigFile/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/3GetSptConfigFile/types/services/BotNameService.d.ts b/TypeScript/3GetSptConfigFile/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/3GetSptConfigFile/types/services/BotWeaponModLimitService.d.ts b/TypeScript/3GetSptConfigFile/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/3GetSptConfigFile/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/3GetSptConfigFile/types/services/CircleOfCultistService.d.ts b/TypeScript/3GetSptConfigFile/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/3GetSptConfigFile/types/services/CustomLocationWaveService.d.ts b/TypeScript/3GetSptConfigFile/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/3GetSptConfigFile/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/3GetSptConfigFile/types/services/DatabaseService.d.ts b/TypeScript/3GetSptConfigFile/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/3GetSptConfigFile/types/services/DatabaseService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/3GetSptConfigFile/types/services/FenceService.d.ts b/TypeScript/3GetSptConfigFile/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/3GetSptConfigFile/types/services/FenceService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/3GetSptConfigFile/types/services/InsuranceService.d.ts b/TypeScript/3GetSptConfigFile/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/3GetSptConfigFile/types/services/InsuranceService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/3GetSptConfigFile/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/3GetSptConfigFile/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/3GetSptConfigFile/types/services/LocationLifecycleService.d.ts b/TypeScript/3GetSptConfigFile/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/3GetSptConfigFile/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/3GetSptConfigFile/types/services/MailSendService.d.ts b/TypeScript/3GetSptConfigFile/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/3GetSptConfigFile/types/services/MailSendService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/3GetSptConfigFile/types/services/MapMarkerService.d.ts b/TypeScript/3GetSptConfigFile/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/3GetSptConfigFile/types/services/MapMarkerService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/3GetSptConfigFile/types/services/PaymentService.d.ts b/TypeScript/3GetSptConfigFile/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/3GetSptConfigFile/types/services/PaymentService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/3GetSptConfigFile/types/services/PmcChatResponseService.d.ts b/TypeScript/3GetSptConfigFile/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/3GetSptConfigFile/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/3GetSptConfigFile/types/services/ProfileFixerService.d.ts b/TypeScript/3GetSptConfigFile/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/3GetSptConfigFile/types/services/ProfileFixerService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/3GetSptConfigFile/types/services/RagfairOfferService.d.ts b/TypeScript/3GetSptConfigFile/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/3GetSptConfigFile/types/services/RagfairOfferService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/3GetSptConfigFile/types/services/RagfairPriceService.d.ts b/TypeScript/3GetSptConfigFile/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/3GetSptConfigFile/types/services/RagfairPriceService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/3GetSptConfigFile/types/services/RagfairTaxService.d.ts b/TypeScript/3GetSptConfigFile/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/3GetSptConfigFile/types/services/RagfairTaxService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/3GetSptConfigFile/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/3GetSptConfigFile/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/3GetSptConfigFile/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/3GetSptConfigFile/types/services/RepairService.d.ts b/TypeScript/3GetSptConfigFile/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/3GetSptConfigFile/types/services/RepairService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/3GetSptConfigFile/types/services/SeasonalEventService.d.ts b/TypeScript/3GetSptConfigFile/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/3GetSptConfigFile/types/services/SeasonalEventService.d.ts +++ b/TypeScript/3GetSptConfigFile/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/3GetSptConfigFile/types/services/TraderServicesService.d.ts b/TypeScript/3GetSptConfigFile/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/3GetSptConfigFile/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/3GetSptConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/3GetSptConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/3GetSptConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/3GetSptConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/3GetSptConfigFile/types/utils/HashUtil.d.ts b/TypeScript/3GetSptConfigFile/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/3GetSptConfigFile/types/utils/HashUtil.d.ts +++ b/TypeScript/3GetSptConfigFile/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/BotCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/DataCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/GameCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/InraidCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/LocationCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/MatchCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/TraderCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/BotController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/BotController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/CustomizationController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/CustomizationController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/GameController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/GameController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/HideoutController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/HideoutController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/InraidController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/InraidController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/InsuranceController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/InsuranceController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/LocationController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/LocationController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/MatchController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/MatchController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/ProfileController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/ProfileController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/QuestController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/QuestController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/RagfairController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/RagfairController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/TradeController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/TradeController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/TraderController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/TraderController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/WeatherController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/WeatherController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/WishlistController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/WishlistController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotInventoryGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotLootGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotWeaponGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LocationGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LocationLootGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LootGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LootGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/PlayerScavGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/4.1UseACustomJson5OrJsonCConfigFile/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/DialogueHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HandbookHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HealthHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HealthHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HideoutHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/InRaidHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/InventoryHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/ItemHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/ItemHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/PresetHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/PresetHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/ProfileHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/QuestHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/QuestHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairSellHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairServerHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RepairHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RepairHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/SecureContainerHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TradeHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TradeHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TraderAssortHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TraderHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TraderHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/loaders/BundleLoader.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/loaders/BundleLoader.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/IGlobals.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocation.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocationBase.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IItem.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/AirdropType.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/AirdropType.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/BaseClasses.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/ConfigTypes.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/HideoutAreas.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/HideoutEventActions.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/ItemTpl.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/QuestRewardType.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/TraderServiceType.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/Weapons.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/Weapons.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBotConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBotDurability.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILootConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/controllers/IBotController.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/hideout/IHideout.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/templates/ITemplates.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/EventOutputHolder.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/static/GameStaticRouter.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/servers/SaveServer.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/servers/SaveServer.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/AirdropService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotEquipmentFilterService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotGenerationCacheService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotNameService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotWeaponModLimitService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/CircleOfCultistService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/CustomLocationWaveService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/DatabaseService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/DatabaseService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/FenceService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/FenceService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/InsuranceService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/InsuranceService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/LocationLifecycleService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/MailSendService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/MailSendService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/MapMarkerService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/MapMarkerService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/PaymentService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/PaymentService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/PmcChatResponseService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/ProfileFixerService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/ProfileFixerService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairOfferService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairOfferService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairPriceService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairPriceService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairTaxService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairTaxService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RepairService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RepairService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/SeasonalEventService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/SeasonalEventService.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/TraderServicesService.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/4.1UseACustomJson5OrJsonCConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/utils/HashUtil.d.ts b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/utils/HashUtil.d.ts +++ b/TypeScript/4.1UseACustomJson5OrJsonCConfigFile/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/BotCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/DataCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/GameCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/InraidCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/4UseACustomConfigFile/types/callbacks/LocationCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/MatchCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/TraderCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/4UseACustomConfigFile/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/4UseACustomConfigFile/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/BotController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/BotController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/CustomizationController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/CustomizationController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/GameController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/GameController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/HideoutController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/HideoutController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/InraidController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/InraidController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/4UseACustomConfigFile/types/controllers/InsuranceController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/InsuranceController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/LocationController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/LocationController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/MatchController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/MatchController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/ProfileController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/ProfileController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/QuestController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/QuestController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/RagfairController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/RagfairController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/TradeController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/TradeController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/TraderController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/TraderController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/WeatherController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/WeatherController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/4UseACustomConfigFile/types/controllers/WishlistController.d.ts b/TypeScript/4UseACustomConfigFile/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/4UseACustomConfigFile/types/controllers/WishlistController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/4UseACustomConfigFile/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/generators/BotGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/BotGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/4UseACustomConfigFile/types/generators/BotInventoryGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/4UseACustomConfigFile/types/generators/BotLootGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/4UseACustomConfigFile/types/generators/BotWeaponGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/4UseACustomConfigFile/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/4UseACustomConfigFile/types/generators/LocationGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/4UseACustomConfigFile/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/4UseACustomConfigFile/types/generators/LocationLootGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/4UseACustomConfigFile/types/generators/LootGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/LootGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/4UseACustomConfigFile/types/generators/PlayerScavGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/4UseACustomConfigFile/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/4UseACustomConfigFile/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/4UseACustomConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/4UseACustomConfigFile/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/4UseACustomConfigFile/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/4UseACustomConfigFile/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/4UseACustomConfigFile/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/BotHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/BotHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/DialogueHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/HandbookHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/HealthHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/HealthHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/HideoutHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/InRaidHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/InventoryHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/ItemHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/ItemHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/PresetHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/PresetHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/ProfileHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/QuestHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/QuestHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/RagfairHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/RagfairSellHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/RagfairServerHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/RepairHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/RepairHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/SecureContainerHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/TradeHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/TradeHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/TraderAssortHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/TraderHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/TraderHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/4UseACustomConfigFile/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/4UseACustomConfigFile/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/4UseACustomConfigFile/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/4UseACustomConfigFile/types/loaders/BundleLoader.d.ts b/TypeScript/4UseACustomConfigFile/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/4UseACustomConfigFile/types/loaders/BundleLoader.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/IGlobals.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocation.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocationBase.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IItem.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/4UseACustomConfigFile/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/AirdropType.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/AirdropType.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/BaseClasses.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/ConfigTypes.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/HideoutAreas.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/HideoutEventActions.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/ItemTpl.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/QuestRewardType.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/TraderServiceType.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/Weapons.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/Weapons.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/4UseACustomConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/4UseACustomConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/4UseACustomConfigFile/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/4UseACustomConfigFile/types/models/spt/config/IBotConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBotDurability.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILootConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/controllers/IBotController.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/hideout/IHideout.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/templates/ITemplates.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/4UseACustomConfigFile/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/4UseACustomConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/4UseACustomConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/4UseACustomConfigFile/types/routers/EventOutputHolder.d.ts b/TypeScript/4UseACustomConfigFile/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/4UseACustomConfigFile/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/4UseACustomConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/4UseACustomConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/4UseACustomConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/4UseACustomConfigFile/types/routers/static/GameStaticRouter.d.ts b/TypeScript/4UseACustomConfigFile/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/4UseACustomConfigFile/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/4UseACustomConfigFile/types/servers/SaveServer.d.ts b/TypeScript/4UseACustomConfigFile/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/4UseACustomConfigFile/types/servers/SaveServer.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/4UseACustomConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/4UseACustomConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/4UseACustomConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/4UseACustomConfigFile/types/services/AirdropService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/4UseACustomConfigFile/types/services/BotEquipmentFilterService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/4UseACustomConfigFile/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/4UseACustomConfigFile/types/services/BotGenerationCacheService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/4UseACustomConfigFile/types/services/BotNameService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/4UseACustomConfigFile/types/services/BotWeaponModLimitService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/4UseACustomConfigFile/types/services/CircleOfCultistService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/4UseACustomConfigFile/types/services/CustomLocationWaveService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/4UseACustomConfigFile/types/services/DatabaseService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/DatabaseService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/4UseACustomConfigFile/types/services/FenceService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/FenceService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/4UseACustomConfigFile/types/services/InsuranceService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/InsuranceService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/4UseACustomConfigFile/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/4UseACustomConfigFile/types/services/LocationLifecycleService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/4UseACustomConfigFile/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/4UseACustomConfigFile/types/services/MailSendService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/MailSendService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/4UseACustomConfigFile/types/services/MapMarkerService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/MapMarkerService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/4UseACustomConfigFile/types/services/PaymentService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/PaymentService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/4UseACustomConfigFile/types/services/PmcChatResponseService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/4UseACustomConfigFile/types/services/ProfileFixerService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/ProfileFixerService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/4UseACustomConfigFile/types/services/RagfairOfferService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/RagfairOfferService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/4UseACustomConfigFile/types/services/RagfairPriceService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/RagfairPriceService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/4UseACustomConfigFile/types/services/RagfairTaxService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/RagfairTaxService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/4UseACustomConfigFile/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/4UseACustomConfigFile/types/services/RepairService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/RepairService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/4UseACustomConfigFile/types/services/SeasonalEventService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/4UseACustomConfigFile/types/services/SeasonalEventService.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/4UseACustomConfigFile/types/services/TraderServicesService.d.ts b/TypeScript/4UseACustomConfigFile/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/4UseACustomConfigFile/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/4UseACustomConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/4UseACustomConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/4UseACustomConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/4UseACustomConfigFile/types/utils/HashUtil.d.ts b/TypeScript/4UseACustomConfigFile/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/4UseACustomConfigFile/types/utils/HashUtil.d.ts +++ b/TypeScript/4UseACustomConfigFile/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/5ReplaceMethod/types/callbacks/BotCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/5ReplaceMethod/types/callbacks/DataCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/5ReplaceMethod/types/callbacks/GameCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/5ReplaceMethod/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/5ReplaceMethod/types/callbacks/InraidCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/5ReplaceMethod/types/callbacks/LocationCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/5ReplaceMethod/types/callbacks/MatchCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/5ReplaceMethod/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/5ReplaceMethod/types/callbacks/TraderCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/5ReplaceMethod/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/5ReplaceMethod/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/5ReplaceMethod/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/5ReplaceMethod/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/5ReplaceMethod/types/controllers/BotController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/BotController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/5ReplaceMethod/types/controllers/CustomizationController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/CustomizationController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/5ReplaceMethod/types/controllers/GameController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/GameController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/5ReplaceMethod/types/controllers/HideoutController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/HideoutController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/5ReplaceMethod/types/controllers/InraidController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/InraidController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/5ReplaceMethod/types/controllers/InsuranceController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/InsuranceController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/5ReplaceMethod/types/controllers/LocationController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/LocationController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/5ReplaceMethod/types/controllers/MatchController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/MatchController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/5ReplaceMethod/types/controllers/ProfileController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/ProfileController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/5ReplaceMethod/types/controllers/QuestController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/QuestController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/5ReplaceMethod/types/controllers/RagfairController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/RagfairController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/5ReplaceMethod/types/controllers/TradeController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/TradeController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/5ReplaceMethod/types/controllers/TraderController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/TraderController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/5ReplaceMethod/types/controllers/WeatherController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/WeatherController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/5ReplaceMethod/types/controllers/WishlistController.d.ts b/TypeScript/5ReplaceMethod/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/5ReplaceMethod/types/controllers/WishlistController.d.ts +++ b/TypeScript/5ReplaceMethod/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/5ReplaceMethod/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/5ReplaceMethod/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/5ReplaceMethod/types/generators/BotGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/5ReplaceMethod/types/generators/BotGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/5ReplaceMethod/types/generators/BotInventoryGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/5ReplaceMethod/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/5ReplaceMethod/types/generators/BotLootGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/5ReplaceMethod/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/5ReplaceMethod/types/generators/BotWeaponGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/5ReplaceMethod/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/5ReplaceMethod/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/5ReplaceMethod/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/5ReplaceMethod/types/generators/LocationGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/5ReplaceMethod/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/5ReplaceMethod/types/generators/LocationLootGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/5ReplaceMethod/types/generators/LootGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/5ReplaceMethod/types/generators/LootGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/5ReplaceMethod/types/generators/PlayerScavGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/5ReplaceMethod/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/5ReplaceMethod/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/5ReplaceMethod/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/5ReplaceMethod/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/5ReplaceMethod/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/5ReplaceMethod/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/5ReplaceMethod/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/5ReplaceMethod/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/5ReplaceMethod/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/5ReplaceMethod/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/5ReplaceMethod/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/5ReplaceMethod/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/5ReplaceMethod/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/5ReplaceMethod/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/5ReplaceMethod/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/5ReplaceMethod/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/5ReplaceMethod/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/BotHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/BotHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/5ReplaceMethod/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/5ReplaceMethod/types/helpers/DialogueHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/5ReplaceMethod/types/helpers/HandbookHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/5ReplaceMethod/types/helpers/HealthHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/HealthHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/5ReplaceMethod/types/helpers/HideoutHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/InRaidHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/InventoryHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/5ReplaceMethod/types/helpers/ItemHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/ItemHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/PresetHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/PresetHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/5ReplaceMethod/types/helpers/ProfileHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/QuestHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/QuestHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/5ReplaceMethod/types/helpers/RagfairHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/5ReplaceMethod/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/RagfairSellHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/RagfairServerHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/RepairHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/RepairHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/5ReplaceMethod/types/helpers/SecureContainerHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/TradeHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/TradeHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/5ReplaceMethod/types/helpers/TraderAssortHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/5ReplaceMethod/types/helpers/TraderHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/TraderHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/5ReplaceMethod/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/5ReplaceMethod/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/5ReplaceMethod/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/5ReplaceMethod/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/5ReplaceMethod/types/loaders/BundleLoader.d.ts b/TypeScript/5ReplaceMethod/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/5ReplaceMethod/types/loaders/BundleLoader.d.ts +++ b/TypeScript/5ReplaceMethod/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/IGlobals.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/ILocation.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/ILocationBase.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IItem.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/5ReplaceMethod/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/5ReplaceMethod/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/5ReplaceMethod/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/5ReplaceMethod/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/5ReplaceMethod/types/models/enums/AirdropType.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/AirdropType.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/5ReplaceMethod/types/models/enums/BaseClasses.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/5ReplaceMethod/types/models/enums/ConfigTypes.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/5ReplaceMethod/types/models/enums/HideoutAreas.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/5ReplaceMethod/types/models/enums/HideoutEventActions.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/5ReplaceMethod/types/models/enums/ItemTpl.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/5ReplaceMethod/types/models/enums/QuestRewardType.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/5ReplaceMethod/types/models/enums/TraderServiceType.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/5ReplaceMethod/types/models/enums/Weapons.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/Weapons.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/5ReplaceMethod/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/5ReplaceMethod/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/5ReplaceMethod/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/5ReplaceMethod/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/5ReplaceMethod/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/5ReplaceMethod/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/5ReplaceMethod/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/5ReplaceMethod/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/5ReplaceMethod/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/5ReplaceMethod/types/models/spt/config/IBotConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IBotDurability.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/ILootConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/5ReplaceMethod/types/models/spt/controllers/IBotController.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/5ReplaceMethod/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/hideout/IHideout.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/5ReplaceMethod/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/templates/ITemplates.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/5ReplaceMethod/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/5ReplaceMethod/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/5ReplaceMethod/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/5ReplaceMethod/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/5ReplaceMethod/types/routers/EventOutputHolder.d.ts b/TypeScript/5ReplaceMethod/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/5ReplaceMethod/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/5ReplaceMethod/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/5ReplaceMethod/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/5ReplaceMethod/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/5ReplaceMethod/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/5ReplaceMethod/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/5ReplaceMethod/types/routers/static/GameStaticRouter.d.ts b/TypeScript/5ReplaceMethod/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/5ReplaceMethod/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/5ReplaceMethod/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/5ReplaceMethod/types/servers/SaveServer.d.ts b/TypeScript/5ReplaceMethod/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/5ReplaceMethod/types/servers/SaveServer.d.ts +++ b/TypeScript/5ReplaceMethod/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/5ReplaceMethod/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/5ReplaceMethod/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/5ReplaceMethod/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/5ReplaceMethod/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/5ReplaceMethod/types/services/AirdropService.d.ts b/TypeScript/5ReplaceMethod/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/5ReplaceMethod/types/services/BotEquipmentFilterService.d.ts b/TypeScript/5ReplaceMethod/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/5ReplaceMethod/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/5ReplaceMethod/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/5ReplaceMethod/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/5ReplaceMethod/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/5ReplaceMethod/types/services/BotGenerationCacheService.d.ts b/TypeScript/5ReplaceMethod/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/5ReplaceMethod/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/5ReplaceMethod/types/services/BotNameService.d.ts b/TypeScript/5ReplaceMethod/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/5ReplaceMethod/types/services/BotWeaponModLimitService.d.ts b/TypeScript/5ReplaceMethod/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/5ReplaceMethod/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/5ReplaceMethod/types/services/CircleOfCultistService.d.ts b/TypeScript/5ReplaceMethod/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/5ReplaceMethod/types/services/CustomLocationWaveService.d.ts b/TypeScript/5ReplaceMethod/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/5ReplaceMethod/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/5ReplaceMethod/types/services/DatabaseService.d.ts b/TypeScript/5ReplaceMethod/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/5ReplaceMethod/types/services/DatabaseService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/5ReplaceMethod/types/services/FenceService.d.ts b/TypeScript/5ReplaceMethod/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/5ReplaceMethod/types/services/FenceService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/5ReplaceMethod/types/services/InsuranceService.d.ts b/TypeScript/5ReplaceMethod/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/5ReplaceMethod/types/services/InsuranceService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/5ReplaceMethod/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/5ReplaceMethod/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/5ReplaceMethod/types/services/LocationLifecycleService.d.ts b/TypeScript/5ReplaceMethod/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/5ReplaceMethod/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/5ReplaceMethod/types/services/MailSendService.d.ts b/TypeScript/5ReplaceMethod/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/5ReplaceMethod/types/services/MailSendService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/5ReplaceMethod/types/services/MapMarkerService.d.ts b/TypeScript/5ReplaceMethod/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/5ReplaceMethod/types/services/MapMarkerService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/5ReplaceMethod/types/services/PaymentService.d.ts b/TypeScript/5ReplaceMethod/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/5ReplaceMethod/types/services/PaymentService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/5ReplaceMethod/types/services/PmcChatResponseService.d.ts b/TypeScript/5ReplaceMethod/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/5ReplaceMethod/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/5ReplaceMethod/types/services/ProfileFixerService.d.ts b/TypeScript/5ReplaceMethod/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/5ReplaceMethod/types/services/ProfileFixerService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/5ReplaceMethod/types/services/RagfairOfferService.d.ts b/TypeScript/5ReplaceMethod/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/5ReplaceMethod/types/services/RagfairOfferService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/5ReplaceMethod/types/services/RagfairPriceService.d.ts b/TypeScript/5ReplaceMethod/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/5ReplaceMethod/types/services/RagfairPriceService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/5ReplaceMethod/types/services/RagfairTaxService.d.ts b/TypeScript/5ReplaceMethod/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/5ReplaceMethod/types/services/RagfairTaxService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/5ReplaceMethod/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/5ReplaceMethod/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/5ReplaceMethod/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/5ReplaceMethod/types/services/RepairService.d.ts b/TypeScript/5ReplaceMethod/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/5ReplaceMethod/types/services/RepairService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/5ReplaceMethod/types/services/SeasonalEventService.d.ts b/TypeScript/5ReplaceMethod/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/5ReplaceMethod/types/services/SeasonalEventService.d.ts +++ b/TypeScript/5ReplaceMethod/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/5ReplaceMethod/types/services/TraderServicesService.d.ts b/TypeScript/5ReplaceMethod/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/5ReplaceMethod/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/5ReplaceMethod/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/5ReplaceMethod/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/5ReplaceMethod/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/5ReplaceMethod/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/5ReplaceMethod/types/utils/HashUtil.d.ts b/TypeScript/5ReplaceMethod/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/5ReplaceMethod/types/utils/HashUtil.d.ts +++ b/TypeScript/5ReplaceMethod/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/BotCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/DataCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/GameCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/InraidCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/6ReferenceAnotherClass/types/callbacks/LocationCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/MatchCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/TraderCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/6ReferenceAnotherClass/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/6ReferenceAnotherClass/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/BotController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/BotController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/CustomizationController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/CustomizationController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/GameController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/GameController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/HideoutController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/HideoutController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/InraidController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/InraidController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/6ReferenceAnotherClass/types/controllers/InsuranceController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/InsuranceController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/LocationController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/LocationController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/MatchController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/MatchController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/ProfileController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/ProfileController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/QuestController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/QuestController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/RagfairController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/RagfairController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/TradeController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/TradeController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/TraderController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/TraderController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/WeatherController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/WeatherController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/6ReferenceAnotherClass/types/controllers/WishlistController.d.ts b/TypeScript/6ReferenceAnotherClass/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/controllers/WishlistController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/BotGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/BotGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/BotInventoryGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/BotLootGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/BotWeaponGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/LocationGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/6ReferenceAnotherClass/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/LocationLootGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/LootGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/LootGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/PlayerScavGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/6ReferenceAnotherClass/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/6ReferenceAnotherClass/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/6ReferenceAnotherClass/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/6ReferenceAnotherClass/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/BotHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/BotHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/DialogueHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/HandbookHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/HealthHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/HealthHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/HideoutHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/InRaidHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/InventoryHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/ItemHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/ItemHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/PresetHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/PresetHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/ProfileHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/QuestHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/QuestHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairSellHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairServerHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/RepairHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/RepairHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/SecureContainerHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/TradeHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/TradeHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/TraderAssortHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/TraderHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/TraderHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/6ReferenceAnotherClass/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/6ReferenceAnotherClass/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/6ReferenceAnotherClass/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/6ReferenceAnotherClass/types/loaders/BundleLoader.d.ts b/TypeScript/6ReferenceAnotherClass/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/loaders/BundleLoader.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/IGlobals.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocation.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocationBase.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IItem.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/6ReferenceAnotherClass/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/AirdropType.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/AirdropType.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/BaseClasses.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/ConfigTypes.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/HideoutAreas.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/HideoutEventActions.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/ItemTpl.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/QuestRewardType.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/TraderServiceType.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/Weapons.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/Weapons.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/6ReferenceAnotherClass/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/6ReferenceAnotherClass/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/6ReferenceAnotherClass/types/models/spt/config/IBotConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBotDurability.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILootConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/controllers/IBotController.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/hideout/IHideout.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/templates/ITemplates.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/6ReferenceAnotherClass/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/6ReferenceAnotherClass/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/6ReferenceAnotherClass/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/routers/EventOutputHolder.d.ts b/TypeScript/6ReferenceAnotherClass/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/6ReferenceAnotherClass/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/6ReferenceAnotherClass/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/6ReferenceAnotherClass/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/6ReferenceAnotherClass/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/6ReferenceAnotherClass/types/routers/static/GameStaticRouter.d.ts b/TypeScript/6ReferenceAnotherClass/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/6ReferenceAnotherClass/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/6ReferenceAnotherClass/types/servers/SaveServer.d.ts b/TypeScript/6ReferenceAnotherClass/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/servers/SaveServer.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/6ReferenceAnotherClass/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/6ReferenceAnotherClass/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/6ReferenceAnotherClass/types/services/AirdropService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/services/BotEquipmentFilterService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/6ReferenceAnotherClass/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/6ReferenceAnotherClass/types/services/BotGenerationCacheService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/6ReferenceAnotherClass/types/services/BotNameService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/services/BotWeaponModLimitService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/6ReferenceAnotherClass/types/services/CircleOfCultistService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/services/CustomLocationWaveService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/6ReferenceAnotherClass/types/services/DatabaseService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/DatabaseService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/6ReferenceAnotherClass/types/services/FenceService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/FenceService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/6ReferenceAnotherClass/types/services/InsuranceService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/InsuranceService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/6ReferenceAnotherClass/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/services/LocationLifecycleService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/6ReferenceAnotherClass/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/6ReferenceAnotherClass/types/services/MailSendService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/MailSendService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/6ReferenceAnotherClass/types/services/MapMarkerService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/MapMarkerService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/6ReferenceAnotherClass/types/services/PaymentService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/PaymentService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/6ReferenceAnotherClass/types/services/PmcChatResponseService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/6ReferenceAnotherClass/types/services/ProfileFixerService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/ProfileFixerService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/6ReferenceAnotherClass/types/services/RagfairOfferService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/RagfairOfferService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/6ReferenceAnotherClass/types/services/RagfairPriceService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/RagfairPriceService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/6ReferenceAnotherClass/types/services/RagfairTaxService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/RagfairTaxService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/6ReferenceAnotherClass/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/6ReferenceAnotherClass/types/services/RepairService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/RepairService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/6ReferenceAnotherClass/types/services/SeasonalEventService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/6ReferenceAnotherClass/types/services/SeasonalEventService.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/6ReferenceAnotherClass/types/services/TraderServicesService.d.ts b/TypeScript/6ReferenceAnotherClass/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/6ReferenceAnotherClass/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/6ReferenceAnotherClass/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/6ReferenceAnotherClass/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/6ReferenceAnotherClass/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/6ReferenceAnotherClass/types/utils/HashUtil.d.ts b/TypeScript/6ReferenceAnotherClass/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/6ReferenceAnotherClass/types/utils/HashUtil.d.ts +++ b/TypeScript/6ReferenceAnotherClass/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/7OnLoadHook/types/callbacks/BotCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/7OnLoadHook/types/callbacks/DataCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/7OnLoadHook/types/callbacks/GameCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/7OnLoadHook/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/7OnLoadHook/types/callbacks/InraidCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/7OnLoadHook/types/callbacks/LocationCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/7OnLoadHook/types/callbacks/MatchCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/7OnLoadHook/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/7OnLoadHook/types/callbacks/TraderCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/7OnLoadHook/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/7OnLoadHook/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/7OnLoadHook/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/7OnLoadHook/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/7OnLoadHook/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/7OnLoadHook/types/controllers/BotController.d.ts b/TypeScript/7OnLoadHook/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/7OnLoadHook/types/controllers/BotController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/7OnLoadHook/types/controllers/CustomizationController.d.ts b/TypeScript/7OnLoadHook/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/7OnLoadHook/types/controllers/CustomizationController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/7OnLoadHook/types/controllers/GameController.d.ts b/TypeScript/7OnLoadHook/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/7OnLoadHook/types/controllers/GameController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/7OnLoadHook/types/controllers/HideoutController.d.ts b/TypeScript/7OnLoadHook/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/7OnLoadHook/types/controllers/HideoutController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/7OnLoadHook/types/controllers/InraidController.d.ts b/TypeScript/7OnLoadHook/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/7OnLoadHook/types/controllers/InraidController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/7OnLoadHook/types/controllers/InsuranceController.d.ts b/TypeScript/7OnLoadHook/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/7OnLoadHook/types/controllers/InsuranceController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/7OnLoadHook/types/controllers/LocationController.d.ts b/TypeScript/7OnLoadHook/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/7OnLoadHook/types/controllers/LocationController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/7OnLoadHook/types/controllers/MatchController.d.ts b/TypeScript/7OnLoadHook/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/7OnLoadHook/types/controllers/MatchController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/7OnLoadHook/types/controllers/ProfileController.d.ts b/TypeScript/7OnLoadHook/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/7OnLoadHook/types/controllers/ProfileController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/7OnLoadHook/types/controllers/QuestController.d.ts b/TypeScript/7OnLoadHook/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/7OnLoadHook/types/controllers/QuestController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/7OnLoadHook/types/controllers/RagfairController.d.ts b/TypeScript/7OnLoadHook/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/7OnLoadHook/types/controllers/RagfairController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/7OnLoadHook/types/controllers/TradeController.d.ts b/TypeScript/7OnLoadHook/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/7OnLoadHook/types/controllers/TradeController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/7OnLoadHook/types/controllers/TraderController.d.ts b/TypeScript/7OnLoadHook/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/7OnLoadHook/types/controllers/TraderController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/7OnLoadHook/types/controllers/WeatherController.d.ts b/TypeScript/7OnLoadHook/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/7OnLoadHook/types/controllers/WeatherController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/7OnLoadHook/types/controllers/WishlistController.d.ts b/TypeScript/7OnLoadHook/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/7OnLoadHook/types/controllers/WishlistController.d.ts +++ b/TypeScript/7OnLoadHook/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/7OnLoadHook/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/7OnLoadHook/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/7OnLoadHook/types/generators/BotGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/7OnLoadHook/types/generators/BotGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/7OnLoadHook/types/generators/BotInventoryGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/7OnLoadHook/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/7OnLoadHook/types/generators/BotLootGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/7OnLoadHook/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/7OnLoadHook/types/generators/BotWeaponGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/7OnLoadHook/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/7OnLoadHook/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/7OnLoadHook/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/7OnLoadHook/types/generators/LocationGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/7OnLoadHook/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/7OnLoadHook/types/generators/LocationLootGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/7OnLoadHook/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/7OnLoadHook/types/generators/LootGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/7OnLoadHook/types/generators/LootGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/7OnLoadHook/types/generators/PlayerScavGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/7OnLoadHook/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/7OnLoadHook/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/7OnLoadHook/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/7OnLoadHook/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/7OnLoadHook/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/7OnLoadHook/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/7OnLoadHook/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/7OnLoadHook/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/7OnLoadHook/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/7OnLoadHook/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/7OnLoadHook/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/7OnLoadHook/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/7OnLoadHook/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/7OnLoadHook/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/7OnLoadHook/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/7OnLoadHook/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/7OnLoadHook/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/7OnLoadHook/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/7OnLoadHook/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/7OnLoadHook/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/7OnLoadHook/types/helpers/BotHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/7OnLoadHook/types/helpers/BotHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/7OnLoadHook/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/7OnLoadHook/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/7OnLoadHook/types/helpers/DialogueHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/7OnLoadHook/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/7OnLoadHook/types/helpers/HandbookHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/7OnLoadHook/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/7OnLoadHook/types/helpers/HealthHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/7OnLoadHook/types/helpers/HealthHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/7OnLoadHook/types/helpers/HideoutHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/7OnLoadHook/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/7OnLoadHook/types/helpers/InRaidHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/7OnLoadHook/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/7OnLoadHook/types/helpers/InventoryHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/7OnLoadHook/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/7OnLoadHook/types/helpers/ItemHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/7OnLoadHook/types/helpers/ItemHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/7OnLoadHook/types/helpers/PresetHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/7OnLoadHook/types/helpers/PresetHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/7OnLoadHook/types/helpers/ProfileHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/7OnLoadHook/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/7OnLoadHook/types/helpers/QuestHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/7OnLoadHook/types/helpers/QuestHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/7OnLoadHook/types/helpers/RagfairHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/7OnLoadHook/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/7OnLoadHook/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/7OnLoadHook/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/7OnLoadHook/types/helpers/RagfairSellHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/7OnLoadHook/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/7OnLoadHook/types/helpers/RagfairServerHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/7OnLoadHook/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/7OnLoadHook/types/helpers/RepairHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/7OnLoadHook/types/helpers/RepairHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/7OnLoadHook/types/helpers/SecureContainerHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/7OnLoadHook/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/7OnLoadHook/types/helpers/TradeHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/7OnLoadHook/types/helpers/TradeHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/7OnLoadHook/types/helpers/TraderAssortHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/7OnLoadHook/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/7OnLoadHook/types/helpers/TraderHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/7OnLoadHook/types/helpers/TraderHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/7OnLoadHook/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/7OnLoadHook/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/7OnLoadHook/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/7OnLoadHook/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/7OnLoadHook/types/loaders/BundleLoader.d.ts b/TypeScript/7OnLoadHook/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/7OnLoadHook/types/loaders/BundleLoader.d.ts +++ b/TypeScript/7OnLoadHook/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/IGlobals.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/ILocation.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/ILocationBase.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IItem.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/7OnLoadHook/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/7OnLoadHook/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/7OnLoadHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/7OnLoadHook/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/7OnLoadHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/7OnLoadHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/7OnLoadHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/7OnLoadHook/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/7OnLoadHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/7OnLoadHook/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/7OnLoadHook/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/7OnLoadHook/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/7OnLoadHook/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/7OnLoadHook/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/7OnLoadHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/7OnLoadHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/7OnLoadHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/7OnLoadHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/7OnLoadHook/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/7OnLoadHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/7OnLoadHook/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/7OnLoadHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/7OnLoadHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/7OnLoadHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/7OnLoadHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/7OnLoadHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/7OnLoadHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/7OnLoadHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/7OnLoadHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/7OnLoadHook/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/7OnLoadHook/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/7OnLoadHook/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/7OnLoadHook/types/models/enums/AirdropType.d.ts b/TypeScript/7OnLoadHook/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/AirdropType.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/7OnLoadHook/types/models/enums/BaseClasses.d.ts b/TypeScript/7OnLoadHook/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/7OnLoadHook/types/models/enums/ConfigTypes.d.ts b/TypeScript/7OnLoadHook/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/7OnLoadHook/types/models/enums/HideoutAreas.d.ts b/TypeScript/7OnLoadHook/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/7OnLoadHook/types/models/enums/HideoutEventActions.d.ts b/TypeScript/7OnLoadHook/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/7OnLoadHook/types/models/enums/ItemTpl.d.ts b/TypeScript/7OnLoadHook/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/7OnLoadHook/types/models/enums/QuestRewardType.d.ts b/TypeScript/7OnLoadHook/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/7OnLoadHook/types/models/enums/TraderServiceType.d.ts b/TypeScript/7OnLoadHook/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/7OnLoadHook/types/models/enums/Weapons.d.ts b/TypeScript/7OnLoadHook/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/Weapons.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/7OnLoadHook/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/7OnLoadHook/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/7OnLoadHook/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/7OnLoadHook/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/7OnLoadHook/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/7OnLoadHook/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/7OnLoadHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/7OnLoadHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/7OnLoadHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/7OnLoadHook/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/7OnLoadHook/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/7OnLoadHook/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/7OnLoadHook/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/7OnLoadHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/7OnLoadHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/7OnLoadHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/7OnLoadHook/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/7OnLoadHook/types/models/spt/config/IBotConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IBotDurability.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/ILootConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/7OnLoadHook/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/7OnLoadHook/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/7OnLoadHook/types/models/spt/controllers/IBotController.d.ts b/TypeScript/7OnLoadHook/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/7OnLoadHook/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/7OnLoadHook/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/7OnLoadHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/7OnLoadHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/7OnLoadHook/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/7OnLoadHook/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/7OnLoadHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/7OnLoadHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/hideout/IHideout.d.ts b/TypeScript/7OnLoadHook/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/7OnLoadHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/7OnLoadHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/7OnLoadHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/templates/ITemplates.d.ts b/TypeScript/7OnLoadHook/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/7OnLoadHook/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/7OnLoadHook/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/7OnLoadHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/7OnLoadHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/7OnLoadHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/7OnLoadHook/types/routers/EventOutputHolder.d.ts b/TypeScript/7OnLoadHook/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/7OnLoadHook/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/7OnLoadHook/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/7OnLoadHook/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/7OnLoadHook/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/7OnLoadHook/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/7OnLoadHook/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/7OnLoadHook/types/routers/static/GameStaticRouter.d.ts b/TypeScript/7OnLoadHook/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/7OnLoadHook/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/7OnLoadHook/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/7OnLoadHook/types/servers/SaveServer.d.ts b/TypeScript/7OnLoadHook/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/7OnLoadHook/types/servers/SaveServer.d.ts +++ b/TypeScript/7OnLoadHook/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/7OnLoadHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/7OnLoadHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/7OnLoadHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/7OnLoadHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/7OnLoadHook/types/services/AirdropService.d.ts b/TypeScript/7OnLoadHook/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/7OnLoadHook/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/7OnLoadHook/types/services/BotEquipmentFilterService.d.ts b/TypeScript/7OnLoadHook/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/7OnLoadHook/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/7OnLoadHook/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/7OnLoadHook/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/7OnLoadHook/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/7OnLoadHook/types/services/BotGenerationCacheService.d.ts b/TypeScript/7OnLoadHook/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/7OnLoadHook/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/7OnLoadHook/types/services/BotNameService.d.ts b/TypeScript/7OnLoadHook/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/7OnLoadHook/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/7OnLoadHook/types/services/BotWeaponModLimitService.d.ts b/TypeScript/7OnLoadHook/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/7OnLoadHook/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/7OnLoadHook/types/services/CircleOfCultistService.d.ts b/TypeScript/7OnLoadHook/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/7OnLoadHook/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/7OnLoadHook/types/services/CustomLocationWaveService.d.ts b/TypeScript/7OnLoadHook/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/7OnLoadHook/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/7OnLoadHook/types/services/DatabaseService.d.ts b/TypeScript/7OnLoadHook/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/7OnLoadHook/types/services/DatabaseService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/7OnLoadHook/types/services/FenceService.d.ts b/TypeScript/7OnLoadHook/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/7OnLoadHook/types/services/FenceService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/7OnLoadHook/types/services/InsuranceService.d.ts b/TypeScript/7OnLoadHook/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/7OnLoadHook/types/services/InsuranceService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/7OnLoadHook/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/7OnLoadHook/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/7OnLoadHook/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/7OnLoadHook/types/services/LocationLifecycleService.d.ts b/TypeScript/7OnLoadHook/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/7OnLoadHook/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/7OnLoadHook/types/services/MailSendService.d.ts b/TypeScript/7OnLoadHook/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/7OnLoadHook/types/services/MailSendService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/7OnLoadHook/types/services/MapMarkerService.d.ts b/TypeScript/7OnLoadHook/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/7OnLoadHook/types/services/MapMarkerService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/7OnLoadHook/types/services/PaymentService.d.ts b/TypeScript/7OnLoadHook/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/7OnLoadHook/types/services/PaymentService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/7OnLoadHook/types/services/PmcChatResponseService.d.ts b/TypeScript/7OnLoadHook/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/7OnLoadHook/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/7OnLoadHook/types/services/ProfileFixerService.d.ts b/TypeScript/7OnLoadHook/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/7OnLoadHook/types/services/ProfileFixerService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/7OnLoadHook/types/services/RagfairOfferService.d.ts b/TypeScript/7OnLoadHook/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/7OnLoadHook/types/services/RagfairOfferService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/7OnLoadHook/types/services/RagfairPriceService.d.ts b/TypeScript/7OnLoadHook/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/7OnLoadHook/types/services/RagfairPriceService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/7OnLoadHook/types/services/RagfairTaxService.d.ts b/TypeScript/7OnLoadHook/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/7OnLoadHook/types/services/RagfairTaxService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/7OnLoadHook/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/7OnLoadHook/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/7OnLoadHook/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/7OnLoadHook/types/services/RepairService.d.ts b/TypeScript/7OnLoadHook/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/7OnLoadHook/types/services/RepairService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/7OnLoadHook/types/services/SeasonalEventService.d.ts b/TypeScript/7OnLoadHook/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/7OnLoadHook/types/services/SeasonalEventService.d.ts +++ b/TypeScript/7OnLoadHook/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/7OnLoadHook/types/services/TraderServicesService.d.ts b/TypeScript/7OnLoadHook/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/7OnLoadHook/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/7OnLoadHook/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/7OnLoadHook/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/7OnLoadHook/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/7OnLoadHook/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/7OnLoadHook/types/utils/HashUtil.d.ts b/TypeScript/7OnLoadHook/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/7OnLoadHook/types/utils/HashUtil.d.ts +++ b/TypeScript/7OnLoadHook/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/8OnUpdateHook/types/callbacks/BotCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/8OnUpdateHook/types/callbacks/DataCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/8OnUpdateHook/types/callbacks/GameCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/8OnUpdateHook/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/8OnUpdateHook/types/callbacks/InraidCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/8OnUpdateHook/types/callbacks/LocationCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/8OnUpdateHook/types/callbacks/MatchCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/8OnUpdateHook/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/8OnUpdateHook/types/callbacks/TraderCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/8OnUpdateHook/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/8OnUpdateHook/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/8OnUpdateHook/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/8OnUpdateHook/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/8OnUpdateHook/types/controllers/BotController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/BotController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/8OnUpdateHook/types/controllers/CustomizationController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/CustomizationController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/8OnUpdateHook/types/controllers/GameController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/GameController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/8OnUpdateHook/types/controllers/HideoutController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/HideoutController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/8OnUpdateHook/types/controllers/InraidController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/InraidController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/8OnUpdateHook/types/controllers/InsuranceController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/InsuranceController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/8OnUpdateHook/types/controllers/LocationController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/LocationController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/8OnUpdateHook/types/controllers/MatchController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/MatchController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/8OnUpdateHook/types/controllers/ProfileController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/ProfileController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/8OnUpdateHook/types/controllers/QuestController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/QuestController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/8OnUpdateHook/types/controllers/RagfairController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/RagfairController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/8OnUpdateHook/types/controllers/TradeController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/TradeController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/8OnUpdateHook/types/controllers/TraderController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/TraderController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/8OnUpdateHook/types/controllers/WeatherController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/WeatherController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/8OnUpdateHook/types/controllers/WishlistController.d.ts b/TypeScript/8OnUpdateHook/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/8OnUpdateHook/types/controllers/WishlistController.d.ts +++ b/TypeScript/8OnUpdateHook/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/8OnUpdateHook/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/8OnUpdateHook/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/8OnUpdateHook/types/generators/BotGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/8OnUpdateHook/types/generators/BotGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/8OnUpdateHook/types/generators/BotInventoryGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/8OnUpdateHook/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/8OnUpdateHook/types/generators/BotLootGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/8OnUpdateHook/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/8OnUpdateHook/types/generators/BotWeaponGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/8OnUpdateHook/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/8OnUpdateHook/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/8OnUpdateHook/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/8OnUpdateHook/types/generators/LocationGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/8OnUpdateHook/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/8OnUpdateHook/types/generators/LocationLootGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/8OnUpdateHook/types/generators/LootGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/8OnUpdateHook/types/generators/LootGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/8OnUpdateHook/types/generators/PlayerScavGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/8OnUpdateHook/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/8OnUpdateHook/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/8OnUpdateHook/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/8OnUpdateHook/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/8OnUpdateHook/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/8OnUpdateHook/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/8OnUpdateHook/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/8OnUpdateHook/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/8OnUpdateHook/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/8OnUpdateHook/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/8OnUpdateHook/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/8OnUpdateHook/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/8OnUpdateHook/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/8OnUpdateHook/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/8OnUpdateHook/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/8OnUpdateHook/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/8OnUpdateHook/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/BotHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/BotHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/8OnUpdateHook/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/8OnUpdateHook/types/helpers/DialogueHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/8OnUpdateHook/types/helpers/HandbookHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/8OnUpdateHook/types/helpers/HealthHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/HealthHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/8OnUpdateHook/types/helpers/HideoutHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/InRaidHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/InventoryHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/8OnUpdateHook/types/helpers/ItemHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/ItemHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/PresetHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/PresetHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/8OnUpdateHook/types/helpers/ProfileHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/QuestHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/QuestHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/8OnUpdateHook/types/helpers/RagfairHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/8OnUpdateHook/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/RagfairSellHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/RagfairServerHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/RepairHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/RepairHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/8OnUpdateHook/types/helpers/SecureContainerHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/TradeHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/TradeHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/8OnUpdateHook/types/helpers/TraderAssortHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/8OnUpdateHook/types/helpers/TraderHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/TraderHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/8OnUpdateHook/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/8OnUpdateHook/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/8OnUpdateHook/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/8OnUpdateHook/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/8OnUpdateHook/types/loaders/BundleLoader.d.ts b/TypeScript/8OnUpdateHook/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/8OnUpdateHook/types/loaders/BundleLoader.d.ts +++ b/TypeScript/8OnUpdateHook/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/IGlobals.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/ILocation.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/ILocationBase.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IItem.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/8OnUpdateHook/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/8OnUpdateHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/8OnUpdateHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/8OnUpdateHook/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/8OnUpdateHook/types/models/enums/AirdropType.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/AirdropType.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/8OnUpdateHook/types/models/enums/BaseClasses.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/8OnUpdateHook/types/models/enums/ConfigTypes.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/8OnUpdateHook/types/models/enums/HideoutAreas.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/8OnUpdateHook/types/models/enums/HideoutEventActions.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/8OnUpdateHook/types/models/enums/ItemTpl.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/8OnUpdateHook/types/models/enums/QuestRewardType.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/8OnUpdateHook/types/models/enums/TraderServiceType.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/8OnUpdateHook/types/models/enums/Weapons.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/Weapons.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/8OnUpdateHook/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/8OnUpdateHook/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/8OnUpdateHook/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/8OnUpdateHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/8OnUpdateHook/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/8OnUpdateHook/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/8OnUpdateHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/8OnUpdateHook/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/8OnUpdateHook/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/8OnUpdateHook/types/models/spt/config/IBotConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IBotDurability.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/ILootConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/8OnUpdateHook/types/models/spt/controllers/IBotController.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/8OnUpdateHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/hideout/IHideout.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/8OnUpdateHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/templates/ITemplates.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/8OnUpdateHook/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/8OnUpdateHook/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/8OnUpdateHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/8OnUpdateHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/8OnUpdateHook/types/routers/EventOutputHolder.d.ts b/TypeScript/8OnUpdateHook/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/8OnUpdateHook/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/8OnUpdateHook/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/8OnUpdateHook/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/8OnUpdateHook/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/8OnUpdateHook/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/8OnUpdateHook/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/8OnUpdateHook/types/routers/static/GameStaticRouter.d.ts b/TypeScript/8OnUpdateHook/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/8OnUpdateHook/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/8OnUpdateHook/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/8OnUpdateHook/types/servers/SaveServer.d.ts b/TypeScript/8OnUpdateHook/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/8OnUpdateHook/types/servers/SaveServer.d.ts +++ b/TypeScript/8OnUpdateHook/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/8OnUpdateHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/8OnUpdateHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/8OnUpdateHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/8OnUpdateHook/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/8OnUpdateHook/types/services/AirdropService.d.ts b/TypeScript/8OnUpdateHook/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/8OnUpdateHook/types/services/BotEquipmentFilterService.d.ts b/TypeScript/8OnUpdateHook/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/8OnUpdateHook/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/8OnUpdateHook/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/8OnUpdateHook/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/8OnUpdateHook/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/8OnUpdateHook/types/services/BotGenerationCacheService.d.ts b/TypeScript/8OnUpdateHook/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/8OnUpdateHook/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/8OnUpdateHook/types/services/BotNameService.d.ts b/TypeScript/8OnUpdateHook/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/8OnUpdateHook/types/services/BotWeaponModLimitService.d.ts b/TypeScript/8OnUpdateHook/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/8OnUpdateHook/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/8OnUpdateHook/types/services/CircleOfCultistService.d.ts b/TypeScript/8OnUpdateHook/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/8OnUpdateHook/types/services/CustomLocationWaveService.d.ts b/TypeScript/8OnUpdateHook/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/8OnUpdateHook/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/8OnUpdateHook/types/services/DatabaseService.d.ts b/TypeScript/8OnUpdateHook/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/8OnUpdateHook/types/services/DatabaseService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/8OnUpdateHook/types/services/FenceService.d.ts b/TypeScript/8OnUpdateHook/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/8OnUpdateHook/types/services/FenceService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/8OnUpdateHook/types/services/InsuranceService.d.ts b/TypeScript/8OnUpdateHook/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/8OnUpdateHook/types/services/InsuranceService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/8OnUpdateHook/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/8OnUpdateHook/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/8OnUpdateHook/types/services/LocationLifecycleService.d.ts b/TypeScript/8OnUpdateHook/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/8OnUpdateHook/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/8OnUpdateHook/types/services/MailSendService.d.ts b/TypeScript/8OnUpdateHook/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/8OnUpdateHook/types/services/MailSendService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/8OnUpdateHook/types/services/MapMarkerService.d.ts b/TypeScript/8OnUpdateHook/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/8OnUpdateHook/types/services/MapMarkerService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/8OnUpdateHook/types/services/PaymentService.d.ts b/TypeScript/8OnUpdateHook/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/8OnUpdateHook/types/services/PaymentService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/8OnUpdateHook/types/services/PmcChatResponseService.d.ts b/TypeScript/8OnUpdateHook/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/8OnUpdateHook/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/8OnUpdateHook/types/services/ProfileFixerService.d.ts b/TypeScript/8OnUpdateHook/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/8OnUpdateHook/types/services/ProfileFixerService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/8OnUpdateHook/types/services/RagfairOfferService.d.ts b/TypeScript/8OnUpdateHook/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/8OnUpdateHook/types/services/RagfairOfferService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/8OnUpdateHook/types/services/RagfairPriceService.d.ts b/TypeScript/8OnUpdateHook/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/8OnUpdateHook/types/services/RagfairPriceService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/8OnUpdateHook/types/services/RagfairTaxService.d.ts b/TypeScript/8OnUpdateHook/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/8OnUpdateHook/types/services/RagfairTaxService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/8OnUpdateHook/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/8OnUpdateHook/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/8OnUpdateHook/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/8OnUpdateHook/types/services/RepairService.d.ts b/TypeScript/8OnUpdateHook/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/8OnUpdateHook/types/services/RepairService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/8OnUpdateHook/types/services/SeasonalEventService.d.ts b/TypeScript/8OnUpdateHook/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/8OnUpdateHook/types/services/SeasonalEventService.d.ts +++ b/TypeScript/8OnUpdateHook/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/8OnUpdateHook/types/services/TraderServicesService.d.ts b/TypeScript/8OnUpdateHook/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/8OnUpdateHook/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/8OnUpdateHook/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/8OnUpdateHook/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/8OnUpdateHook/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/8OnUpdateHook/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/8OnUpdateHook/types/utils/HashUtil.d.ts b/TypeScript/8OnUpdateHook/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/8OnUpdateHook/types/utils/HashUtil.d.ts +++ b/TypeScript/8OnUpdateHook/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number; diff --git a/TypeScript/9RouterHooks/types/callbacks/BotCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/BotCallbacks.d.ts index 7d22dcf..909e93e 100644 --- a/TypeScript/9RouterHooks/types/callbacks/BotCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/BotCallbacks.d.ts @@ -1,14 +1,16 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; 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 { IDifficulties } 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; - constructor(botController: BotController, httpResponse: HttpResponseUtil); + protected applicationContext: ApplicationContext; + constructor(botController: BotController, httpResponse: HttpResponseUtil, applicationContext: ApplicationContext); /** * Handle singleplayer/settings/bot/limit * Is called by client to define each bot roles wave limit @@ -24,7 +26,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/difficulties * @returns dictionary of every bot and its diffiulty settings */ - getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; + getAllBotDifficulties(url: string, info: IEmptyRequestData, sessionID: string): Record; /** * Handle client/game/bot/generate * @returns IGetBodyResponseData @@ -34,7 +36,7 @@ export declare class BotCallbacks { * Handle singleplayer/settings/bot/maxCap * @returns string */ - getBotCap(url: string, info: any, sessionID: string): string; + getBotCap(url: string, info: IEmptyRequestData, sessionID: string): string; /** * Handle singleplayer/settings/bot/getBotBehaviours * @returns string diff --git a/TypeScript/9RouterHooks/types/callbacks/DataCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/DataCallbacks.d.ts index 41f1d0c..d92be66 100644 --- a/TypeScript/9RouterHooks/types/callbacks/DataCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/DataCallbacks.d.ts @@ -1,5 +1,5 @@ import { HideoutController } from "@spt/controllers/HideoutController"; -import { RagfairController } from "@spt/controllers/RagfairController"; +import { TraderController } from "@spt/controllers/TraderController"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; import { IGlobals } from "@spt/models/eft/common/IGlobals"; @@ -7,7 +7,7 @@ import { ICustomizationItem } from "@spt/models/eft/common/tables/ICustomization 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 { IHideoutProductionData } 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"; @@ -23,9 +23,9 @@ export declare class DataCallbacks { protected timeUtil: TimeUtil; protected traderHelper: TraderHelper; protected databaseService: DatabaseService; - protected ragfairController: RagfairController; + protected traderController: TraderController; protected hideoutController: HideoutController; - constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, ragfairController: RagfairController, hideoutController: HideoutController); + constructor(httpResponse: HttpResponseUtil, timeUtil: TimeUtil, traderHelper: TraderHelper, databaseService: DatabaseService, traderController: TraderController, hideoutController: HideoutController); /** * Handle client/settings * @returns ISettingsBase @@ -62,7 +62,7 @@ export declare class DataCallbacks { */ getHideoutSettings(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutAreas(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - gethideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getHideoutProduction(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; getHideoutScavcase(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/languages @@ -83,7 +83,6 @@ export declare class DataCallbacks { /** * Handle client/items/prices/ * Called when viewing a traders assorts - * TODO - fully implement this */ getItemPrices(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/9RouterHooks/types/callbacks/GameCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/GameCallbacks.d.ts index b41454f..e34bc41 100644 --- a/TypeScript/9RouterHooks/types/callbacks/GameCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/GameCallbacks.d.ts @@ -76,10 +76,19 @@ export declare class GameCallbacks implements OnLoad { * @returns string */ getVersion(url: string, info: IEmptyRequestData, sessionID: string): string; + /** + * Handle /client/report/send & /client/reports/lobby/send + * @returns INullResponseData + */ reportNickname(url: string, info: IUIDRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/getRaidTime * @returns string */ getRaidTime(url: string, request: IGetRaidTimeRequest, sessionID: string): IGetRaidTimeResponse; + /** + * Handle /client/survey + * @returns INullResponseData + */ + getSurvey(url: string, request: IEmptyRequestData, sessionID: string): INullResponseData; } diff --git a/TypeScript/9RouterHooks/types/callbacks/HideoutCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/HideoutCallbacks.d.ts index fadab9b..d63bcd6 100644 --- a/TypeScript/9RouterHooks/types/callbacks/HideoutCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/HideoutCallbacks.d.ts @@ -3,7 +3,9 @@ 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; import { IHideoutScavCaseStartRequestData } from "@spt/models/eft/hideout/IHideoutScavCaseStartRequestData"; @@ -75,6 +77,14 @@ export declare class HideoutCallbacks implements OnUpdate { * Handle client/game/profile/items/moving - HideoutCancelProductionCommand */ cancelProduction(pmcData: IPmcData, request: IHideoutCancelProductionRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + */ + circleOfCultistProductionStart(pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData, sessionId: string): IItemEventRouterResponse; + /** + * Handle client/game/profile/items/moving - HideoutDeleteProductionCommand + */ + hideoutDeleteProductionCommand(pmcData: IPmcData, request: IHideoutDeleteProductionRequestData, sessionId: string): IItemEventRouterResponse; onUpdate(timeSinceLastRun: number): Promise; getRoute(): string; } diff --git a/TypeScript/9RouterHooks/types/callbacks/InraidCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/InraidCallbacks.d.ts index dc6ede4..675403f 100644 --- a/TypeScript/9RouterHooks/types/callbacks/InraidCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/InraidCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; /** * Handle client requests @@ -28,36 +27,12 @@ export declare class InraidCallbacks { * @param sessionID Session id * @returns Null http response */ - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - /** - * Handle singleplayer/settings/raid/endstate - * @returns - */ - getRaidEndState(): string; + saveProgress(url: string, info: IScavSaveRequestData, sessionID: string): INullResponseData; /** * Handle singleplayer/settings/raid/menu * @returns JSON as string */ getRaidMenuSettings(): 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/9RouterHooks/types/callbacks/LocationCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/LocationCallbacks.d.ts index 2825050..2d121b0 100644 --- a/TypeScript/9RouterHooks/types/callbacks/LocationCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/LocationCallbacks.d.ts @@ -1,9 +1,8 @@ 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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class LocationCallbacks { protected httpResponse: HttpResponseUtil; @@ -11,8 +10,6 @@ export declare class LocationCallbacks { constructor(httpResponse: HttpResponseUtil, locationController: LocationController); /** Handle client/locations */ getLocationData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getLocalloot */ - getLocation(url: string, info: IGetLocationRequestData, sessionID: string): IGetBodyResponseData; - /** Handle client/location/getAirdropLoot */ - getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): string; + /** Handle client/airdrop/loot */ + getAirdropLoot(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/9RouterHooks/types/callbacks/MatchCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/MatchCallbacks.d.ts index 73f7564..b63c920 100644 --- a/TypeScript/9RouterHooks/types/callbacks/MatchCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/MatchCallbacks.d.ts @@ -2,7 +2,7 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { IGroupCharacter } from "@spt/models/eft/match/IGroupCharacter"; import { IMatchGroupCurrentResponse } from "@spt/models/eft/match/IMatchGroupCurrentResponse"; @@ -15,6 +15,8 @@ import { IMatchGroupTransferRequest } from "@spt/models/eft/match/IMatchGroupTra 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; import { IUpdatePingRequestData } from "@spt/models/eft/match/IUpdatePingRequestData"; import { DatabaseService } from "@spt/services/DatabaseService"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; @@ -45,8 +47,8 @@ export declare class MatchCallbacks { transferGroup(url: string, info: IMatchGroupTransferRequest, sessionId: string): IGetBodyResponseData; /** Handle client/match/group/invite/cancel-all */ 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; + putMetrics(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; + eventDisconnect(url: string, request: IPutMetricsRequestData, sessionId: string): INullResponseData; serverAvailable(url: string, info: IEmptyRequestData, sessionId: string): IGetBodyResponseData; /** Handle match/group/start_game */ joinMatch(url: string, info: IMatchGroupStartGameRequest, sessionID: string): IGetBodyResponseData; @@ -63,8 +65,10 @@ export declare class MatchCallbacks { leaveGroup(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/match/group/player/remove */ removePlayerFromGroup(url: string, info: IMatchGroupPlayerRemoveRequest, sessionID: string): IGetBodyResponseData; - /** Handle client/match/offline/end */ - endOfflineRaid(url: string, info: IEndOfflineRaidRequestData, sessionID: string): INullResponseData; + /** Handle client/match/local/start */ + startLocalRaid(url: string, info: IStartLocalRaidRequestData, sessionID: string): IGetBodyResponseData; + /** Handle client/match/local/end */ + endLocalRaid(url: string, info: IEndLocalRaidRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration */ getRaidConfiguration(url: string, info: IGetRaidConfigurationRequestData, sessionID: string): INullResponseData; /** Handle client/raid/configuration-by-profile */ diff --git a/TypeScript/9RouterHooks/types/callbacks/ProfileCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/ProfileCallbacks.d.ts index ba35f5e..3824a8c 100644 --- a/TypeScript/9RouterHooks/types/callbacks/ProfileCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/ProfileCallbacks.d.ts @@ -5,7 +5,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -65,7 +65,7 @@ export declare class ProfileCallbacks { * Handle client/profile/status * Called when creating a character when choosing a character face/voice */ - getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getProfileStatus(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** * Handle client/profile/view * Called when viewing another players profile diff --git a/TypeScript/9RouterHooks/types/callbacks/TraderCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/TraderCallbacks.d.ts index c081a9b..5177d99 100644 --- a/TypeScript/9RouterHooks/types/callbacks/TraderCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/TraderCallbacks.d.ts @@ -4,12 +4,15 @@ 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 { ModdedTraders } from "@spt/models/spt/config/ITraderConfig"; +import { ConfigServer } from "@spt/servers/ConfigServer"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class TraderCallbacks implements OnLoad, OnUpdate { protected httpResponse: HttpResponseUtil; protected traderController: TraderController; + protected configServer: ConfigServer; constructor(httpResponse: HttpResponseUtil, // TODO: delay required - traderController: TraderController); + traderController: TraderController, configServer: ConfigServer); onLoad(): Promise; onUpdate(): Promise; getRoute(): string; @@ -19,4 +22,6 @@ export declare class TraderCallbacks implements OnLoad, OnUpdate { getTrader(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; /** Handle client/trading/api/getTraderAssort */ getAssort(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + /** Handle /singleplayer/moddedTraders */ + getModdedTraderData(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/9RouterHooks/types/callbacks/WeatherCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/WeatherCallbacks.d.ts index 5ba5aab..8229592 100644 --- a/TypeScript/9RouterHooks/types/callbacks/WeatherCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/WeatherCallbacks.d.ts @@ -2,6 +2,7 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class WeatherCallbacks { protected httpResponse: HttpResponseUtil; @@ -12,4 +13,5 @@ export declare class WeatherCallbacks { * @returns IWeatherData */ getWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; + getLocalWeather(url: string, info: IEmptyRequestData, sessionID: string): IGetBodyResponseData; } diff --git a/TypeScript/9RouterHooks/types/callbacks/WishlistCallbacks.d.ts b/TypeScript/9RouterHooks/types/callbacks/WishlistCallbacks.d.ts index f5b500f..414eb91 100644 --- a/TypeScript/9RouterHooks/types/callbacks/WishlistCallbacks.d.ts +++ b/TypeScript/9RouterHooks/types/callbacks/WishlistCallbacks.d.ts @@ -1,12 +1,16 @@ 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"; +import { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; export declare class WishlistCallbacks { protected wishlistController: WishlistController; constructor(wishlistController: WishlistController); /** Handle AddToWishList event */ - addToWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishlist(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishlist(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishlist(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle ChangeWishlistItemCategory */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/9RouterHooks/types/controllers/BotController.d.ts b/TypeScript/9RouterHooks/types/controllers/BotController.d.ts index 475f51b..36477a2 100644 --- a/TypeScript/9RouterHooks/types/controllers/BotController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/BotController.d.ts @@ -5,11 +5,12 @@ 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 { ICondition, 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 { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IGetRaidConfigurationRequestData } from "@spt/models/eft/match/IGetRaidConfigurationRequestData"; import { BotGenerationDetails } from "@spt/models/spt/bots/BotGenerationDetails"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; @@ -58,10 +59,11 @@ export declare class BotController { * Adjust PMC settings to ensure they engage the correct bot types * @param type what bot the server is requesting settings for * @param diffLevel difficulty level server requested settings for + * @param raidConfig OPTIONAL - applicationContext Data stored at start of raid * @param ignoreRaidSettings should raid settings chosen pre-raid be ignored * @returns Difficulty object */ - getBotDifficulty(type: string, diffLevel: string, ignoreRaidSettings?: boolean): Difficulty; + getBotDifficulty(type: string, diffLevel: string, raidConfig?: IGetRaidConfigurationRequestData, ignoreRaidSettings?: boolean): IDifficultyCategories; getAllBotDifficulties(): Record; /** * Generate bot profiles and store in cache @@ -75,20 +77,27 @@ export declare class BotController { * @param request Bot generation request object * @param pmcProfile Player profile * @param sessionId Session id - * @returns + * @returns IBotBase[] */ - generateBotsFirstTime(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected generateMultipleBotsAndCache(request: IGenerateBotsRequestData, pmcProfile: IPmcData, sessionId: string): Promise; + protected getMostRecentRaidSettings(): IGetRaidConfigurationRequestData; + /** + * Get min/max level range values for a specific map + * @param location Map name e.g. factory4_day + * @returns MinMax + */ + protected getPmcLevelRangeForMap(location: string): MinMax; /** * 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 raidSettings Settings chosen pre-raid by player * @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; + protected getBotGenerationDetailsForWave(condition: ICondition, pmcProfile: IPmcData, allPmcsHaveSameNameAsPlayer: boolean, raidSettings: IGetRaidConfigurationRequestData, botCountToGenerate: number, generateAsPmc: boolean): BotGenerationDetails; /** * Get players profile level * @param pmcProfile Profile to get level from @@ -102,7 +111,7 @@ export declare class BotController { * @param sessionId Session id * @returns A promise for the bots to be done generating */ - protected generateWithBotDetails(condition: Condition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; + protected generateWithBotDetails(condition: ICondition, botGenerationDetails: BotGenerationDetails, sessionId: string): Promise; /** * Generate a single bot and store in the cache * @param botGenerationDetails the bot details to generate the bot with @@ -117,7 +126,8 @@ export declare class BotController { * @param request Bot generation request object * @returns Single IBotBase object */ - returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected returnSingleBotFromCache(sessionId: string, request: IGenerateBotsRequestData): Promise; + protected getPmcConversionMinMaxForLocation(requestedBotRole: string, location: string): MinMax; protected updateBotGenerationDetailsToRandomBoss(botGenerationDetails: BotGenerationDetails, possibleBossTypeWeights: Record): void; /** * Get the difficulty passed in, if its not "asonline", get selected difficulty from config diff --git a/TypeScript/9RouterHooks/types/controllers/CustomizationController.d.ts b/TypeScript/9RouterHooks/types/controllers/CustomizationController.d.ts index 028341a..8aef9e9 100644 --- a/TypeScript/9RouterHooks/types/controllers/CustomizationController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/CustomizationController.d.ts @@ -1,7 +1,7 @@ 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 { IBuyClothingRequestData, IPaymentItemForClothing } 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"; @@ -54,17 +54,17 @@ export declare class CustomizationController { * Update output object and player profile with purchase details * @param sessionId Session id * @param pmcData Player profile - * @param clothingItems Clothing purchased + * @param itemsToPayForClothingWith Clothing purchased * @param output Client response */ - protected payForClothingItems(sessionId: string, pmcData: IPmcData, clothingItems: ClothingItem[], output: IItemEventRouterResponse): void; + protected payForClothingItems(sessionId: string, pmcData: IPmcData, itemsToPayForClothingWith: IPaymentItemForClothing[], output: IItemEventRouterResponse): void; /** * Update output object and player profile with purchase details for single piece of clothing * @param sessionId Session id * @param pmcData Player profile - * @param clothingItem Clothing item purchased + * @param paymentItemDetails Payment details * @param output Client response */ - protected payForClothingItem(sessionId: string, pmcData: IPmcData, clothingItem: ClothingItem, output: IItemEventRouterResponse): void; + protected payForClothingItem(sessionId: string, pmcData: IPmcData, paymentItemDetails: IPaymentItemForClothing, output: IItemEventRouterResponse): void; protected getAllTraderSuits(sessionID: string): ISuit[]; } diff --git a/TypeScript/9RouterHooks/types/controllers/GameController.d.ts b/TypeScript/9RouterHooks/types/controllers/GameController.d.ts index e219c04..dbcbce2 100644 --- a/TypeScript/9RouterHooks/types/controllers/GameController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/GameController.d.ts @@ -1,6 +1,7 @@ import { ApplicationContext } from "@spt/context/ApplicationContext"; import { HideoutHelper } from "@spt/helpers/HideoutHelper"; import { HttpServerHelper } from "@spt/helpers/HttpServerHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { PreSptModLoader } from "@spt/loaders/PreSptModLoader"; import { IEmptyRequestData } from "@spt/models/eft/common/IEmptyRequestData"; @@ -45,6 +46,7 @@ export declare class GameController { protected hashUtil: HashUtil; protected preSptModLoader: PreSptModLoader; protected httpServerHelper: HttpServerHelper; + protected inventoryHelper: InventoryHelper; protected randomUtil: RandomUtil; protected hideoutHelper: HideoutHelper; protected profileHelper: ProfileHelper; @@ -68,12 +70,13 @@ export declare class GameController { protected pmcConfig: IPmcConfig; protected lootConfig: ILootConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, timeUtil: TimeUtil, hashUtil: HashUtil, preSptModLoader: PreSptModLoader, httpServerHelper: HttpServerHelper, inventoryHelper: InventoryHelper, 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 migrate39xProfile(fullProfile: ISptProfile): void; protected adjustHideoutCraftTimes(overrideSeconds: number): void; /** * Adjust all hideout craft times to be no higher than the override diff --git a/TypeScript/9RouterHooks/types/controllers/HideoutController.d.ts b/TypeScript/9RouterHooks/types/controllers/HideoutController.d.ts index 89a428c..f65df69 100644 --- a/TypeScript/9RouterHooks/types/controllers/HideoutController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/HideoutController.d.ts @@ -6,12 +6,14 @@ 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 { IBotHideoutArea, IProduct, ITaskConditionCounter } 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 { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; import { IHideoutContinuousProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutContinuousProductionStartRequestData"; +import { IHideoutDeleteProductionRequestData } from "@spt/models/eft/hideout/IHideoutDeleteProductionRequestData"; import { IHideoutImproveAreaRequestData } from "@spt/models/eft/hideout/IHideoutImproveAreaRequestData"; import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; import { IHideoutPutItemInRequestData } from "@spt/models/eft/hideout/IHideoutPutItemInRequestData"; @@ -30,6 +32,7 @@ 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 { CircleOfCultistService } from "@spt/services/CircleOfCultistService"; import { DatabaseService } from "@spt/services/DatabaseService"; import { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; @@ -61,11 +64,12 @@ export declare class HideoutController { protected profileActivityService: ProfileActivityService; protected configServer: ConfigServer; protected fenceService: FenceService; + protected circleOfCultistService: CircleOfCultistService; protected cloner: ICloner; /** Key used in TaskConditionCounters array */ protected static nameTaskConditionCountersCrafting: string; protected hideoutConfig: IHideoutConfig; - 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); + 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, circleOfCultistService: CircleOfCultistService, cloner: ICloner); /** * Handle HideoutUpgrade event * Start a hideout area upgrade @@ -88,7 +92,7 @@ export declare class HideoutController { * Upgrade wall status to visible in profile if medstation/water collector are both level 1 * @param pmcData Player profile */ - protected checkAndUpgradeWall(pmcData: IPmcData): void; + protected SetWallVisibleIfPrereqsMet(pmcData: IPmcData): void; /** * @param pmcData Profile to edit * @param output Object to send back to client @@ -97,14 +101,23 @@ export declare class HideoutController { * @param dbHideoutArea Hideout area being upgraded * @param hideoutStage Stage hideout area is being upgraded to */ - protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: HideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + protected addContainerImprovementToProfile(output: IItemEventRouterResponse, sessionID: string, pmcData: IPmcData, profileParentHideoutArea: IBotHideoutArea, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; + /** + * Add stand1/stand2/stand3 inventory items to profile, depending on passed in hideout stage + * @param sessionId Session id + * @param equipmentPresetStage Current EQUIPMENT_PRESETS_STAND stage data + * @param pmcData Player profile + * @param equipmentPresetHideoutArea + * @param output Response to send back to client + */ + protected addMissingPresetStandItemsToProfile(sessionId: string, equipmentPresetStage: Stage, pmcData: IPmcData, equipmentPresetHideoutArea: IHideoutArea, output: IItemEventRouterResponse): void; /** * Add an inventory item to profile from a hideout area stage data * @param pmcData Profile to update - * @param dbHideoutData Hideout area from db being upgraded + * @param dbHideoutArea Hideout area from db being upgraded * @param hideoutStage Stage area upgraded to */ - protected addUpdateInventoryItemToProfile(pmcData: IPmcData, dbHideoutData: IHideoutArea, hideoutStage: Stage): void; + protected addUpdateInventoryItemToProfile(sessionId: string, pmcData: IPmcData, dbHideoutArea: IHideoutArea, hideoutStage: Stage): void; /** * @param output Object to send to client * @param sessionID Session/player id @@ -112,7 +125,7 @@ export declare class HideoutController { * @param hideoutDbData Hideout area that caused addition of stash * @param hideoutStage Hideout area upgraded to this */ - protected addContainerUpgradeToClientOutput(output: IItemEventRouterResponse, sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage): void; + protected addContainerUpgradeToClientOutput(sessionID: string, areaType: HideoutAreas, hideoutDbData: IHideoutArea, hideoutStage: Stage, output: IItemEventRouterResponse): void; /** * Handle HideoutPutItemsInAreaSlots * Create item in hideout slot item array, remove item from player inventory @@ -140,7 +153,7 @@ export declare class HideoutController { * @param hideoutArea Area fuel is being removed from * @returns IItemEventRouterResponse response */ - protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: HideoutArea): IItemEventRouterResponse; + protected removeResourceFromArea(sessionID: string, pmcData: IPmcData, removeResourceRequest: IHideoutTakeItemOutRequestData, output: IItemEventRouterResponse, hideoutArea: IBotHideoutArea): IItemEventRouterResponse; /** * Handle HideoutToggleArea event * Toggle area on/off @@ -182,7 +195,7 @@ export declare class HideoutController { * @param rewards reward items to add to profile * @param recipeId recipe id to save into Production dict */ - protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: Product[], recipeId: string): void; + protected addScavCaseRewardsToProfile(pmcData: IPmcData, rewards: IProduct[], recipeId: string): void; /** * Start production of continuously created item * @param pmcData Player profile @@ -263,7 +276,22 @@ export declare class HideoutController { */ cancelProduction(sessionId: string, pmcData: IPmcData, request: IHideoutCancelProductionRequestData): IItemEventRouterResponse; /** - * Function called every x seconds as part of onUpdate event + * Handle client/game/profile/items/moving - HideoutCircleOfCultistProductionStart + * @param sessionId Session id + * @param pmcData Profile of crafter + * @param request Request data + */ + circleOfCultistProductionStart(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Handle HideoutDeleteProductionCommand event + * @param sessionId Session id + * @param pmcData Player profile + * @param request Client request data + * @returns IItemEventRouterResponse + */ + hideoutDeleteProductionCommand(sessionId: string, pmcData: IPmcData, request: IHideoutDeleteProductionRequestData): IItemEventRouterResponse; + /** + * Function called every `hideoutConfig.runIntervalSeconds` seconds as part of onUpdate event */ update(): void; } diff --git a/TypeScript/9RouterHooks/types/controllers/InraidController.d.ts b/TypeScript/9RouterHooks/types/controllers/InraidController.d.ts index 9f0c409..8f0bfc1 100644 --- a/TypeScript/9RouterHooks/types/controllers/InraidController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/InraidController.d.ts @@ -1,70 +1,26 @@ 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 { IScavSaveRequestData } from "@spt/models/eft/inRaid/IScavSaveRequestData"; import { IBotConfig } from "@spt/models/spt/config/IBotConfig"; -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"; /** * Logic for handling In Raid callbacks */ export declare class InraidController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected databaseService: DatabaseService; - protected pmcChatResponseService: PmcChatResponseService; - protected matchBotDetailsCacheService: MatchBotDetailsCacheService; - protected questHelper: QuestHelper; - protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; - 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 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); + constructor(logger: ILogger, saveServer: SaveServer, profileHelper: ProfileHelper, localisationService: LocalisationService, applicationContext: ApplicationContext, configServer: ConfigServer); /** * Save locationId to active profiles inraid object AND app context * @param sessionID Session id @@ -78,118 +34,12 @@ export declare class InraidController { * @param offraidData post-raid request data * @param sessionID Session id */ - savePostRaidProgress(offraidData: ISaveProgressRequestData, sessionID: string): void; - /** - * Handle updating player profile post-pmc raid - * @param sessionID Session id - * @param postRaidRequest Post-raid data - */ - protected savePmcProgress(sessionID: string, postRaidRequest: ISaveProgressRequestData): void; - /** - * 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 - * @returns Updated profile object - */ - protected performPostRaidActionsWhenDead(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData, sessionID: string): IPmcData; - /** - * Adjust player characters body part hp post-raid - * @param postRaidSaveRequest post raid data - * @param pmcData player profile - */ - protected updatePmcHealthPostRaid(postRaidSaveRequest: ISaveProgressRequestData, pmcData: IPmcData): void; - /** - * Reduce body part hp to % of max - * @param pmcData profile to edit - * @param multiplier multiplier to apply to max health - */ - 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 - * @returns Profile has condition counters - */ - protected profileHasConditionCounters(profile: IPmcData): boolean; - /** - * Scav quest progress isnt transferred automatically from scav to pmc, we do this manually - * @param scavProfile Scav profile with quest progress post-raid - * @param pmcProfile Server pmc profile to copy scav quest progress into - */ - protected migrateScavQuestProgressToPmcProfile(scavProfile: IPmcData, pmcProfile: IPmcData): void; - /** - * Is the player dead after a raid - dead is anything other than "survived" / "runner" - * @param statusOnExit exit value from offraidData object - * @returns true if dead - */ - protected isPlayerDead(statusOnExit: PlayerRaidEndState): boolean; - /** - * Mark inventory items as FiR if player survived raid, otherwise remove FiR from them - * @param offraidData Save Progress Request - */ - protected markOrRemoveFoundInRaidItems(offraidData: ISaveProgressRequestData): void; - /** - * Update profile after player completes scav raid - * @param scavData Scav profile - * @param sessionID Session id - * @param offraidData Post-raid save request - * @param pmcData Pmc profile - * @param isDead Is player dead - */ - protected handlePostRaidPlayerScavProcess(scavData: IPmcData, sessionID: string, offraidData: ISaveProgressRequestData, pmcData: IPmcData, isDead: boolean): void; - /** - * 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, scavData: IPmcData): void; + savePostRaidProfileForScav(offraidData: IScavSaveRequestData, sessionID: string): void; /** * Get the inraid config from configs/inraid.json * @returns InRaid Config */ getInraidConfig(): IInRaidConfig; - /** - * Get airdrop config from configs/airdrop.json - * @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/9RouterHooks/types/controllers/InsuranceController.d.ts b/TypeScript/9RouterHooks/types/controllers/InsuranceController.d.ts index 543e915..2f45da6 100644 --- a/TypeScript/9RouterHooks/types/controllers/InsuranceController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/InsuranceController.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -109,7 +109,7 @@ export declare class InsuranceController { * @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(rootItemParentID: string, 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. @@ -118,7 +118,7 @@ export declare class InsuranceController { * @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; + 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, @@ -129,7 +129,7 @@ export declare class InsuranceController { * @param parentAttachmentsMap A Map object containing parent item IDs to arrays of their attachment items. * @returns void */ - protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; + protected processRegularItems(insured: Insurance, toDelete: Set, parentAttachmentsMap: Map): void; /** * Process parent items and their attachments, updating the toDelete Set accordingly. * @@ -138,7 +138,7 @@ export declare class InsuranceController { * @param traderId The trader ID from the Insurance object. * @param toDelete A Set object to keep track of items marked for deletion. */ - protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; + protected processAttachments(mainParentToAttachmentsMap: Map, itemsMap: Map, traderId: string, toDelete: Set): void; /** * Takes an array of attachment items that belong to the same main-parent item, sorts them in descending order by * their maximum price. For each attachment, a roll is made to determine if a deletion should be made. Once the @@ -150,9 +150,9 @@ export declare class InsuranceController { * @param toDelete The array that accumulates the IDs of the items to be deleted. * @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; + protected processAttachmentByParent(attachments: IItem[], traderId: string, toDelete: Set): void; + protected logAttachmentsBeingRemoved(attachmentIdsToRemove: string[], attachments: IItem[], attachmentPrices: Record): void; + protected weightAttachmentsByPrice(attachments: IItem[]): Record; /** * 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 @@ -184,7 +184,7 @@ export declare class InsuranceController { * @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 undefined on error. */ - protected rollForDelete(traderId: string, insuredItem?: Item): boolean | undefined; + protected rollForDelete(traderId: string, insuredItem?: IItem): boolean | undefined; /** * Handle Insure event * Add insurance to an item @@ -195,6 +195,14 @@ export declare class InsuranceController { * @returns IItemEventRouterResponse object to send to client */ insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse; + /** + * Insure softinserts of Armor that has softinsert slots + * Allows armors to come back after being lost correctly + * @param item Armor item to be insured + * @param pmcData Player profile + * @param body Insurance request data + */ + insureSoftInserts(item: IItem, pmcData: IPmcData, body: IInsureRequestData): void; /** * Handle client/insurance/items/list/cost * Calculate insurance cost diff --git a/TypeScript/9RouterHooks/types/controllers/LocationController.d.ts b/TypeScript/9RouterHooks/types/controllers/LocationController.d.ts index a541b9c..64aa20f 100644 --- a/TypeScript/9RouterHooks/types/controllers/LocationController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/LocationController.d.ts @@ -1,57 +1,19 @@ -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 { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; 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 { AirdropService } from "@spt/services/AirdropService"; 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 { HashUtil } from "@spt/utils/HashUtil"; -import { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class LocationController { - protected hashUtil: HashUtil; - protected randomUtil: RandomUtil; - protected weightedRandomHelper: WeightedRandomHelper; protected logger: ILogger; - protected locationGenerator: LocationGenerator; - protected localisationService: LocalisationService; - protected raidTimeAdjustmentService: RaidTimeAdjustmentService; - protected itemFilterService: ItemFilterService; - protected lootGenerator: LootGenerator; protected databaseService: DatabaseService; - protected timeUtil: TimeUtil; + protected airdropService: AirdropService; 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, databaseService: DatabaseService, timeUtil: TimeUtil, configServer: ConfigServer, applicationContext: ApplicationContext, cloner: ICloner); - /** - * Handle client/location/getLocalloot - * Get a location (map) with generated loot data - * @param sessionId Player id - * @param request Map request to generate - * @returns ILocationBase - */ - get(sessionId: string, request: IGetLocationRequestData): ILocationBase; - /** - * Generate a maps base location and loot - * @param name Map name - * @returns ILocationBase - */ - protected generate(name: string): ILocationBase; + constructor(logger: ILogger, databaseService: DatabaseService, airdropService: AirdropService, configServer: ConfigServer, cloner: ICloner); /** * Handle client/locations * Get all maps base location properties without loot data @@ -59,22 +21,6 @@ export declare class LocationController { * @returns ILocationsGenerateAllResponse */ generateAll(sessionId: string): ILocationsGenerateAllResponse; - /** - * Handle client/location/getAirdropLoot - * Get loot for an airdrop container - * Generates it randomly based on config/airdrop.json values - * @returns Array of LootItem objects - */ - getAirdropLoot(): IAirdropLootResult; - /** - * Randomly pick a type of airdrop loot using weighted values from config - * @returns airdrop type value - */ - protected chooseAirdropType(): AirdropTypeEnum; - /** - * Get the configuration for a specific type of airdrop - * @param airdropType Type of airdrop to get settings for - * @returns LootRequest - */ - protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; + /** Handle client/airdrop/loot */ + getAirdropLoot(): IGetAirdropLootResponse; } diff --git a/TypeScript/9RouterHooks/types/controllers/MatchController.d.ts b/TypeScript/9RouterHooks/types/controllers/MatchController.d.ts index c08ebb0..a0fefce 100644 --- a/TypeScript/9RouterHooks/types/controllers/MatchController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/MatchController.d.ts @@ -1,50 +1,33 @@ 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 { IEndLocalRaidRequestData } from "@spt/models/eft/match/IEndLocalRaidRequestData"; 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 { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; 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 { LocationLifecycleService } from "@spt/services/LocationLifecycleService"; 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class MatchController { protected logger: ILogger; protected saveServer: SaveServer; - protected timeUtil: TimeUtil; - protected randomUtil: RandomUtil; - protected hashUtil: HashUtil; - protected profileHelper: ProfileHelper; protected matchLocationService: MatchLocationService; - protected traderHelper: TraderHelper; - protected botLootCacheService: BotLootCacheService; protected configServer: ConfigServer; protected profileSnapshotService: ProfileSnapshotService; - protected botGenerationCacheService: BotGenerationCacheService; - protected mailSendService: MailSendService; - protected lootGenerator: LootGenerator; protected applicationContext: ApplicationContext; + protected locationLifecycleService: LocationLifecycleService; + protected cloner: ICloner; protected matchConfig: IMatchConfig; - 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); + constructor(logger: ILogger, saveServer: SaveServer, matchLocationService: MatchLocationService, configServer: ConfigServer, profileSnapshotService: ProfileSnapshotService, applicationContext: ApplicationContext, locationLifecycleService: LocationLifecycleService, cloner: ICloner); getEnabled(): boolean; /** Handle client/match/group/delete */ deleteGroup(info: any): void; @@ -57,48 +40,15 @@ export declare class MatchController { * @param request Raid config request * @param sessionID Session id */ - startOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; + configureOfflineRaid(request: IGetRaidConfigurationRequestData, sessionID: string): void; /** * Convert a difficulty value from pre-raid screen to a bot difficulty * @param botDifficulty dropdown difficulty value * @returns bot difficulty */ protected convertDifficultyDropdownIntoBotDifficulty(botDifficulty: string): string; - /** Handle client/match/offline/end */ - endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; - /** - * Did player take a COOP extract - * @param extractName Name of extract player took - * @returns True if coop extract - */ - protected extractWasViaCoop(extractName: string): boolean; - 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(sessionId: string, pmcData: IPmcData, extractName: string): void; - /** - * Was extract by car - * @param extractName name of extract - * @returns true if car extract - */ - protected extractWasViaCar(extractName: string): boolean; - /** - * Handle when a player extracts using a car - Add rep to fence - * @param extractName name of the extract used - * @param pmcData Player profile - * @param sessionId Session id - */ - protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; - /** - * Get the fence rep gain from using a car or coop extract - * @param pmcData Profile - * @param baseGain amount gained for the first extract - * @param extractCount Number of times extract was taken - * @returns Fence standing after taking extract - */ - protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** Handle client/match/local/end */ + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; } diff --git a/TypeScript/9RouterHooks/types/controllers/ProfileController.d.ts b/TypeScript/9RouterHooks/types/controllers/ProfileController.d.ts index 7e6d35c..71fd9e6 100644 --- a/TypeScript/9RouterHooks/types/controllers/ProfileController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/ProfileController.d.ts @@ -7,7 +7,7 @@ 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 { IGetProfileStatusResponseData } 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"; @@ -117,7 +117,7 @@ export declare class ProfileController { /** * Handle client/profile/status */ - getProfileStatus(sessionId: string): GetProfileStatusResponseData; + getProfileStatus(sessionId: string): IGetProfileStatusResponseData; getOtherProfile(sessionId: string, request: IGetOtherProfileRequest): IGetOtherProfileResponse; /** * Handle client/profile/settings diff --git a/TypeScript/9RouterHooks/types/controllers/QuestController.d.ts b/TypeScript/9RouterHooks/types/controllers/QuestController.d.ts index 6a5b415..270a70a 100644 --- a/TypeScript/9RouterHooks/types/controllers/QuestController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/QuestController.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -72,6 +72,13 @@ export declare class QuestController { * @returns Client response */ acceptQuest(pmcData: IPmcData, acceptedQuest: IAcceptQuestRequestData, sessionID: string): IItemEventRouterResponse; + /** + * + * @param questConditions Conditions to iterate over and possibly add to profile + * @param pmcData Profile to add to + * @param questId Quest conditions came from + */ + protected addTaskConditionCountersToProfile(questConditions: IQuestCondition[], pmcData: IPmcData, questId: string): void; /** * Handle the client accepting a repeatable quest and starting it * Send starting rewards if any to player and @@ -127,7 +134,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: Item[]): void; + protected sendSuccessDialogMessageOnQuestComplete(sessionID: string, pmcData: IPmcData, completedQuestId: string, questRewards: IItem[]): 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 @@ -167,7 +174,7 @@ export declare class QuestController { * @param output Response to send to user * @returns IItemEventRouterResponse */ - protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: Item, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; + protected showQuestItemHandoverMatchError(handoverQuestRequest: IHandoverQuestRequestData, itemHandedOver: IItem, handoverRequirements: IQuestCondition, output: IItemEventRouterResponse): IItemEventRouterResponse; /** * Increment a backend counter stored value by an amount, * Create counter if it does not exist diff --git a/TypeScript/9RouterHooks/types/controllers/RagfairController.d.ts b/TypeScript/9RouterHooks/types/controllers/RagfairController.d.ts index fbd25e0..463ea29 100644 --- a/TypeScript/9RouterHooks/types/controllers/RagfairController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/RagfairController.d.ts @@ -10,7 +10,7 @@ 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 { IItem } 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"; @@ -199,7 +199,7 @@ export declare class RagfairController { * @param output IItemEventRouterResponse * @returns True if charging tax to player failed */ - protected chargePlayerTaxFee(sessionID: string, rootItem: Item, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; + protected chargePlayerTaxFee(sessionID: string, rootItem: IItem, pmcData: IPmcData, requirementsPriceInRub: number, itemStackCount: number, offerRequest: IAddOfferRequestData, output: IItemEventRouterResponse): boolean; /** * Is the item to be listed on the flea valid * @param offerRequest Client offer request @@ -220,10 +220,10 @@ export declare class RagfairController { * @returns Array of items from player inventory */ protected getItemsToListOnFleaFromInventory(pmcData: IPmcData, itemIdsFromFleaOfferRequest: string[]): { - items: Item[][] | undefined; + items: IItem[][] | undefined; errorMessage: string | undefined; }; - createPlayerOffer(sessionId: string, requirements: Requirement[], items: Item[], sellInOnePiece: boolean): IRagfairOffer; + createPlayerOffer(sessionId: string, requirements: Requirement[], items: IItem[], sellInOnePiece: boolean): IRagfairOffer; getAllFleaPrices(): Record; getStaticPrices(): Record; /** diff --git a/TypeScript/9RouterHooks/types/controllers/TradeController.d.ts b/TypeScript/9RouterHooks/types/controllers/TradeController.d.ts index 842a97b..517446a 100644 --- a/TypeScript/9RouterHooks/types/controllers/TradeController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/TradeController.d.ts @@ -4,7 +4,7 @@ import { RagfairOfferHelper } from "@spt/helpers/RagfairOfferHelper"; 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 { IItem } 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"; @@ -101,5 +101,5 @@ export declare class TradeController { * @param traderDetails Trader being sold to to perform buy category check against * @returns Rouble price */ - protected getPriceOfItemAndChildren(parentItemId: string, items: Item[], handbookPrices: Record, traderDetails: ITraderBase): number; + protected getPriceOfItemAndChildren(parentItemId: string, items: IItem[], handbookPrices: Record, traderDetails: ITraderBase): number; } diff --git a/TypeScript/9RouterHooks/types/controllers/TraderController.d.ts b/TypeScript/9RouterHooks/types/controllers/TraderController.d.ts index 3592fc6..bdc9b51 100644 --- a/TypeScript/9RouterHooks/types/controllers/TraderController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/TraderController.d.ts @@ -3,11 +3,13 @@ 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 { IGetItemPricesResponse } from "@spt/models/eft/game/IGetItemPricesResponse"; 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 { RagfairPriceService } from "@spt/services/RagfairPriceService"; import { TraderAssortService } from "@spt/services/TraderAssortService"; import { TraderPurchasePersisterService } from "@spt/services/TraderPurchasePersisterService"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -20,13 +22,14 @@ export declare class TraderController { protected profileHelper: ProfileHelper; protected traderHelper: TraderHelper; protected traderAssortService: TraderAssortService; + protected ragfairPriceService: RagfairPriceService; protected traderPurchasePersisterService: TraderPurchasePersisterService; protected fenceService: FenceService; protected fenceBaseAssortGenerator: FenceBaseAssortGenerator; 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); + constructor(logger: ILogger, timeUtil: TimeUtil, databaseService: DatabaseService, traderAssortHelper: TraderAssortHelper, profileHelper: ProfileHelper, traderHelper: TraderHelper, traderAssortService: TraderAssortService, ragfairPriceService: RagfairPriceService, 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 @@ -58,4 +61,6 @@ export declare class TraderController { getTrader(sessionID: string, traderID: string): ITraderBase; /** Handle client/trading/api/getTraderAssort */ getAssort(sessionId: string, traderId: string): ITraderAssort; + /** Handle client/items/prices/TRADERID */ + getItemPrices(sessionId: string, traderId: string): IGetItemPricesResponse; } diff --git a/TypeScript/9RouterHooks/types/controllers/WeatherController.d.ts b/TypeScript/9RouterHooks/types/controllers/WeatherController.d.ts index 7d24954..a2ce0d8 100644 --- a/TypeScript/9RouterHooks/types/controllers/WeatherController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/WeatherController.d.ts @@ -2,13 +2,16 @@ 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 { IGetLocalWeatherResponseData } from "@spt/models/spt/weather/IGetLocalWeatherResponseData"; import { ConfigServer } from "@spt/servers/ConfigServer"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; export declare class WeatherController { protected weatherGenerator: WeatherGenerator; protected logger: ILogger; protected configServer: ConfigServer; + protected seasonalEventService: SeasonalEventService; protected weatherConfig: IWeatherConfig; - constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer); + constructor(weatherGenerator: WeatherGenerator, logger: ILogger, configServer: ConfigServer, seasonalEventService: SeasonalEventService); /** Handle client/weather */ generate(): IWeatherData; /** @@ -16,4 +19,5 @@ export declare class WeatherController { * @returns Date object */ getCurrentInRaidTime(): Date; + generateLocal(sesssionID: string): IGetLocalWeatherResponseData; } diff --git a/TypeScript/9RouterHooks/types/controllers/WishlistController.d.ts b/TypeScript/9RouterHooks/types/controllers/WishlistController.d.ts index ee4d970..7559dc6 100644 --- a/TypeScript/9RouterHooks/types/controllers/WishlistController.d.ts +++ b/TypeScript/9RouterHooks/types/controllers/WishlistController.d.ts @@ -1,12 +1,16 @@ 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 { IAddToWishlistRequest } from "@spt/models/eft/wishlist/IAddToWishlistRequest"; +import { IChangeWishlistItemCategoryRequest } from "@spt/models/eft/wishlist/IChangeWishlistItemCategoryRequest"; +import { IRemoveFromWishlistRequest } from "@spt/models/eft/wishlist/IRemoveFromWishlistRequest"; import { EventOutputHolder } from "@spt/routers/EventOutputHolder"; export declare class WishlistController { protected eventOutputHolder: EventOutputHolder; constructor(eventOutputHolder: EventOutputHolder); /** Handle AddToWishList */ - addToWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + addToWishList(pmcData: IPmcData, request: IAddToWishlistRequest, sessionID: string): IItemEventRouterResponse; /** Handle RemoveFromWishList event */ - removeFromWishList(pmcData: IPmcData, body: IWishlistActionData, sessionID: string): IItemEventRouterResponse; + removeFromWishList(pmcData: IPmcData, request: IRemoveFromWishlistRequest, sessionID: string): IItemEventRouterResponse; + /** Handle changeWishlistItemCategory event */ + changeWishlistItemCategory(pmcData: IPmcData, request: IChangeWishlistItemCategoryRequest, sessionID: string): IItemEventRouterResponse; } diff --git a/TypeScript/9RouterHooks/types/generators/BotEquipmentModGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/BotEquipmentModGenerator.d.ts index e25c7d2..04639ed 100644 --- a/TypeScript/9RouterHooks/types/generators/BotEquipmentModGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/BotEquipmentModGenerator.d.ts @@ -7,9 +7,9 @@ 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 { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -17,6 +17,7 @@ import { IGenerateEquipmentProperties } from "@spt/models/spt/bots/IGenerateEqui 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 { ExhaustableArray } from "@spt/models/spt/server/ExhaustableArray"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; import { BotEquipmentFilterService } from "@spt/services/BotEquipmentFilterService"; @@ -59,7 +60,7 @@ export declare class BotEquipmentModGenerator { * @param forceSpawn should this mod be forced to spawn * @returns Item + compatible mods as an array */ - generateModsForEquipment(equipment: Item[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): Item[]; + generateModsForEquipment(equipment: IItem[], parentId: string, parentTemplate: ITemplateItem, settings: IGenerateEquipmentProperties, shouldForceSpawn?: boolean): IItem[]; /** * Filter a bots plate pool based on its current level * @param settings Bot equipment generation settings @@ -75,7 +76,7 @@ export declare class BotEquipmentModGenerator { * @param request Data used to generate the weapon * @returns Weapon + mods array */ - generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): Item[]; + generateModsForWeapon(sessionId: string, request: IGenerateWeaponRequest): IItem[]; /** * Should the provided bot have its stock chance values altered to 100% * @param modSlot Slot to check @@ -101,7 +102,7 @@ export declare class BotEquipmentModGenerator { * Set mod spawn chances to defined amount * @param modSpawnChances Chance dictionary to update */ - protected adjustSlotSpawnChances(modSpawnChances: ModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; + protected adjustSlotSpawnChances(modSpawnChances: IModsChances, modSlotsToAdjust: string[], newChancePercent: number): void; /** * Does the provided modSlot allow muzzle-related items * @param modSlot Slot id to check @@ -121,7 +122,7 @@ export declare class BotEquipmentModGenerator { * @param parentTemplate item template * @returns Slot item */ - protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): Slot; + protected getModItemSlotFromDb(modSlot: string, parentTemplate: ITemplateItem): ISlot; /** * Randomly choose if a mod should be spawned, 100% for required mods OR mod is ammo slot * @param itemSlot slot the item sits in @@ -130,7 +131,7 @@ export declare class BotEquipmentModGenerator { * @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, botEquipConfig: EquipmentFilters): ModSpawn; + protected shouldModBeSpawned(itemSlot: ISlot, modSlot: string, modSpawnChances: IModsChances, botEquipConfig: EquipmentFilters): ModSpawn; /** * Choose a mod to fit into the desired slot * @param request Data used to choose an appropriate mod with @@ -138,7 +139,8 @@ export declare class BotEquipmentModGenerator { */ protected chooseModToPutIntoSlot(request: IModToSpawnRequest): [boolean, ITemplateItem] | undefined; /** - * + * Choose a weapon mod tpl for a given slot from a pool of choices + * Checks chosen tpl is compatible with all existing weapon items * @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 @@ -146,22 +148,36 @@ export declare class BotEquipmentModGenerator { * @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; + protected getCompatibleWeaponModTplForSlotFromPool(request: IModToSpawnRequest, modPool: string[], parentSlot: ISlot, choiceTypeEnum: ModSpawn, weapon: IItem[], modSlotName: string): IChooseRandomCompatibleModResult; + /** + * + * @param modPool Pool of item Tpls to choose from + * @param modSpawnType How should the slot choice be handled - forced/normal etc + * @param weapon Weapon mods at current time + * @param modSlotName Name of mod slot being filled + * @returns IChooseRandomCompatibleModResult + */ + protected getCompatibleModFromPool(modPool: string[], modSpawnType: ModSpawn, weapon: IItem[]): IChooseRandomCompatibleModResult; + protected createExhaustableArray(itemsToAddToArray: T[]): ExhaustableArray; + /** + * Get a list of mod tpls that are compatible with the current weapon + * @param modPool + * @param tplBlacklist Tpls that are incompatible and should not be used + * @returns string array of compatible mod tpls with weapon + */ + protected getFilteredModPool(modPool: string[], tplBlacklist: Set): string[]; /** * 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 request * @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[]; + protected getModPoolForSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getModPoolForDefaultSlot(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): string[]; + protected getMatchingModFromPreset(request: IModToSpawnRequest, weaponTemplate: ITemplateItem): IItem; /** * Get default preset for weapon OR get specific weapon presets for edge cases (mp5/silenced dvl) * @param weaponTemplate Weapons db template @@ -175,7 +191,7 @@ export declare class BotEquipmentModGenerator { * @param modTpl Mod to check compatibility with weapon * @returns True if incompatible */ - protected weaponModComboIsIncompatible(weapon: Item[], modTpl: string): boolean; + protected weaponModComboIsIncompatible(weapon: IItem[], modTpl: string): boolean; /** * Create a mod item with provided parameters as properties + add upd property * @param modId _id @@ -186,7 +202,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected createModItem(modId: string, modTpl: string, parentId: string, modSlot: string, modTemplate: ITemplateItem, botRole: string): IItem; /** * Get a list of containers that hold ammo * e.g. mod_magazine / patron_in_weapon_000 @@ -201,7 +217,7 @@ export declare class BotEquipmentModGenerator { * @param items Items to ensure picked mod is compatible with * @returns Item tpl */ - protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: Slot, modSlot: string, items: Item[]): string | undefined; + protected getRandomModTplFromItemDb(fallbackModTpl: string, parentSlot: ISlot, modSlot: string, items: IItem[]): string | undefined; /** * Check if mod exists in db + is for a required slot * @param modToAdd Db template of mod to check @@ -211,7 +227,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected isModValidForSlot(modToAdd: [boolean, ITemplateItem], slotAddedToTemplate: ISlot, 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) @@ -219,7 +235,7 @@ export declare class BotEquipmentModGenerator { * @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; + protected addCompatibleModsForProvidedMod(desiredSlotName: string, modTemplate: ITemplateItem, modPool: IMods, botEquipBlacklist: EquipmentFilterDetails): void; /** * Get the possible items that fit a slot * @param parentItemId item tpl to get compatible items for @@ -246,7 +262,7 @@ export declare class BotEquipmentModGenerator { * @param cylinderMagParentId The CylinderMagazine's UID * @param cylinderMagTemplate The CylinderMagazine's template */ - protected fillCamora(items: Item[], modPool: Mods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; + protected fillCamora(items: IItem[], modPool: IMods, cylinderMagParentId: string, cylinderMagTemplate: ITemplateItem): void; /** * 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 @@ -262,5 +278,5 @@ export declare class BotEquipmentModGenerator { * @param botWeaponSightWhitelist Whitelist of scope types by weapon base type * @returns Array of scope tpls that have been filtered to just ones allowed for that weapon type */ - protected filterSightsByWeaponType(weapon: Item, scopes: string[], botWeaponSightWhitelist: Record): string[]; + protected filterSightsByWeaponType(weapon: IItem, scopes: string[], botWeaponSightWhitelist: Record): string[]; } diff --git a/TypeScript/9RouterHooks/types/generators/BotGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/BotGenerator.d.ts index ebb8a59..bff2b49 100644 --- a/TypeScript/9RouterHooks/types/generators/BotGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/BotGenerator.d.ts @@ -1,20 +1,19 @@ 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 { IBaseJsonSkills, IBaseSkill, IBotBase, IInfo, IHealth as PmcHealth, ISkills as botSkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IAppearance, IBodyPart, IBotType, IHealth, IInventory } 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 { BotNameService } from "@spt/services/BotNameService"; 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; @@ -32,15 +31,14 @@ export declare class BotGenerator { protected botEquipmentFilterService: BotEquipmentFilterService; protected weightedRandomHelper: WeightedRandomHelper; protected botHelper: BotHelper; - protected botDifficultyHelper: BotDifficultyHelper; protected seasonalEventService: SeasonalEventService; - protected localisationService: LocalisationService; protected itemFilterService: ItemFilterService; + protected botNameService: BotNameService; protected configServer: ConfigServer; protected cloner: ICloner; protected botConfig: IBotConfig; protected pmcConfig: IPmcConfig; - 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); + constructor(logger: ILogger, hashUtil: HashUtil, randomUtil: RandomUtil, timeUtil: TimeUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, botInventoryGenerator: BotInventoryGenerator, botLevelGenerator: BotLevelGenerator, botEquipmentFilterService: BotEquipmentFilterService, weightedRandomHelper: WeightedRandomHelper, botHelper: BotHelper, seasonalEventService: SeasonalEventService, itemFilterService: ItemFilterService, botNameService: BotNameService, configServer: ConfigServer, cloner: ICloner); /** * Generate a player scav bot object * @param role e.g. assault / pmcbot @@ -83,25 +81,14 @@ export declare class BotGenerator { * Remove items from item.json/lootableItemBlacklist from bots inventory * @param botInventory Bot to filter */ - protected removeBlacklistedLootFromBotTemplate(botInventory: Inventory): void; + protected removeBlacklistedLootFromBotTemplate(botInventory: IInventory): 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 */ - protected setBotAppearance(bot: IBotBase, appearance: Appearance, botGenerationDetails: BotGenerationDetails): void; - /** - * Create a bot nickname - * @param botJsonTemplate x.json from database - * @param botGenerationDetails - * @param botRole role of bot e.g. assault - * @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; + protected setBotAppearance(bot: IBotBase, appearance: IAppearance, botGenerationDetails: BotGenerationDetails): void; /** * Log the number of PMCs generated to the debug console * @param output Generated bot array, ready to send to client @@ -113,7 +100,13 @@ export declare class BotGenerator { * @param playerScav Is a pscav bot being generated * @returns PmcHealth object */ - protected generateHealth(healthObj: Health, playerScav?: boolean): PmcHealth; + protected generateHealth(healthObj: IHealth, playerScav?: boolean): PmcHealth; + /** + * Sum up body parts max hp values, return the bodypart collection with lowest value + * @param bodies Body parts to sum up + * @returns Lowest hp collection + */ + protected getLowestHpBody(bodies: IBodyPart[]): IBodyPart | undefined; /** * Get a bots skills with randomsied progress value between the min and max values * @param botSkills Skills that should have their progress value randomised @@ -146,7 +139,7 @@ export declare class BotGenerator { * @param botInfo bot info object to update * @returns Chosen game version */ - protected setRandomisedGameVersionAndCategory(botInfo: Info): string; + protected setRandomisedGameVersionAndCategory(botInfo: IInfo): string; /** * Add a side-specific (usec/bear) dogtag item to a bots inventory * @param bot bot to add dogtag to diff --git a/TypeScript/9RouterHooks/types/generators/BotInventoryGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/BotInventoryGenerator.d.ts index 1ea549c..5c23c43 100644 --- a/TypeScript/9RouterHooks/types/generators/BotInventoryGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/BotInventoryGenerator.d.ts @@ -5,8 +5,8 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IChances, IEquipment, IGeneration, IInventory } 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"; @@ -59,17 +59,20 @@ export declare class BotInventoryGenerator { * @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, chosenGameVersion: string): void; + protected generateAndAddEquipmentToBot(templateInventory: IInventory, wornItemChances: IChances, botRole: string, botInventory: PmcInventory, botLevel: number, chosenGameVersion: string): void; /** * Remove non-armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for */ - protected filterRigsToThoseWithProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithProtection(templateEquipment: IEquipment, botRole: string): void; /** * Remove armored rigs from parameter data * @param templateEquipment Equpiment to filter TacticalVest of + * @param botRole Role of bot vests are being filtered for + * @param allowEmptyResult Should the function return all rigs when 0 unarmored are found */ - protected filterRigsToThoseWithoutProtection(templateEquipment: Equipment): void; + protected filterRigsToThoseWithoutProtection(templateEquipment: IEquipment, botRole: string, allowEmptyResult?: boolean): 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 @@ -94,13 +97,13 @@ export declare class BotInventoryGenerator { * @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; + protected generateAndAddWeaponsToBot(templateInventory: IInventory, equipmentChances: IChances, sessionId: string, botInventory: PmcInventory, botRole: string, isPmc: boolean, itemGenerationLimitsMinMax: IGeneration, botLevel: number): void; /** * Calculate if the bot should have weapons in Primary/Secondary/Holster slots * @param equipmentChances Chances bot has certain equipment * @returns What slots bot should have weapons generated for */ - protected getDesiredWeaponsForBot(equipmentChances: Chances): { + protected getDesiredWeaponsForBot(equipmentChances: IChances): { slot: EquipmentSlots; shouldSpawn: boolean; }[]; @@ -118,5 +121,5 @@ export declare class BotInventoryGenerator { protected addWeaponAndMagazinesToInventory(sessionId: string, weaponSlot: { slot: EquipmentSlots; shouldSpawn: boolean; - }, templateInventory: Inventory, botInventory: PmcInventory, equipmentChances: Chances, botRole: string, isPmc: boolean, itemGenerationWeights: Generation, botLevel: number): void; + }, templateInventory: IInventory, botInventory: PmcInventory, equipmentChances: IChances, botRole: string, isPmc: boolean, itemGenerationWeights: IGeneration, botLevel: number): void; } diff --git a/TypeScript/9RouterHooks/types/generators/BotLootGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/BotLootGenerator.d.ts index c0583c6..07f8b68 100644 --- a/TypeScript/9RouterHooks/types/generators/BotLootGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/BotLootGenerator.d.ts @@ -5,9 +5,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IBotType, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -51,6 +51,14 @@ export declare class BotLootGenerator { * @param botLevel Level of bot */ generateLoot(sessionId: string, botJsonTemplate: IBotType, isPmc: boolean, botRole: string, botInventory: PmcInventory, botLevel: number): void; + /** + * Gets the rouble cost total for loot in a bots backpack by the bots levl + * Will return 0 for non PMCs + * @param botLevel Bots level + * @param isPmc Is the bot a PMC + * @returns number + */ + protected getBackpackRoubleTotalByLevel(botLevel: number, isPmc: boolean): number; /** * Get an array of the containers a bot has on them (pockets/backpack/vest) * @param botInventory Bot to check @@ -83,7 +91,7 @@ export declare class BotLootGenerator { * @param isPmc Is bot being generated for a pmc */ 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[][]; + protected createWalletLoot(walletId: string): IItem[][]; /** * Some items need child items to function, add them to the itemToAddChildrenTo array * @param itemToAddTemplate Db template of item to check @@ -91,7 +99,7 @@ export declare class BotLootGenerator { * @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; + protected addRequiredChildItemsToParent(itemToAddTemplate: ITemplateItem, itemToAddChildrenTo: IItem[], isPmc: boolean, botRole: string): void; /** * Add generated weapons to inventory as loot * @param botInventory inventory to add preset to @@ -101,7 +109,7 @@ 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, containersIdFull?: Set): void; + protected addLooseWeaponsToInventorySlot(sessionId: string, botInventory: PmcInventory, equipmentSlot: string, templateInventory: IInventory, modChances: IModsChances, 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 @@ -123,14 +131,14 @@ export declare class BotLootGenerator { * @param itemTemplate item details from db * @param moneyItem Money item to randomise */ - protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: Item): void; + protected randomiseMoneyStackSize(botRole: string, itemTemplate: ITemplateItem, moneyItem: IItem): void; /** * Randomise the size of an ammo stack * @param isPmc Is ammo on a PMC bot * @param itemTemplate item details from db * @param ammoItem Ammo item to randomise */ - protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: Item): void; + protected randomiseAmmoStackSize(isPmc: boolean, itemTemplate: ITemplateItem, ammoItem: IItem): void; /** * 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 diff --git a/TypeScript/9RouterHooks/types/generators/BotWeaponGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/BotWeaponGenerator.d.ts index 8e03b35..273e981 100644 --- a/TypeScript/9RouterHooks/types/generators/BotWeaponGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/BotWeaponGenerator.d.ts @@ -4,9 +4,9 @@ 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 { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData, IInventory, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -52,18 +52,18 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon generated for a pmc * @returns GenerateWeaponResult object */ - generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateRandomWeapon(sessionId: string, equipmentSlot: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Get a random weighted weapon from a bots pool of weapons * @param equipmentSlot Primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @returns weapon tpl */ - pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: Inventory): string; + pickWeightedWeaponTplFromPool(equipmentSlot: string, botTemplateInventory: IInventory): string; /** * Generated a weapon based on the supplied weapon tpl - * @param weaponTpl weapon tpl to generate (use pickWeightedWeaponTplFromPool()) - * @param equipmentSlot slot to fit into, primary/secondary/holster + * @param weaponTpl Weapon tpl to generate (use pickWeightedWeaponTplFromPool()) + * @param slotName Slot to fit into, primary/secondary/holster * @param botTemplateInventory e.g. assault.json * @param weaponParentId ParentId of the weapon being generated * @param modChances Dictionary of item types and % chance weapon will have that mod @@ -71,7 +71,7 @@ export declare class BotWeaponGenerator { * @param isPmc Is weapon being generated for a pmc * @returns GenerateWeaponResult object */ - generateWeaponByTpl(sessionId: string, weaponTpl: string, equipmentSlot: string, botTemplateInventory: Inventory, weaponParentId: string, modChances: ModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; + generateWeaponByTpl(sessionId: string, weaponTpl: string, slotName: string, botTemplateInventory: IInventory, weaponParentId: string, modChances: IModsChances, botRole: string, isPmc: boolean, botLevel: number): GenerateWeaponResult; /** * Insert a cartridge(s) into a weapon * Handles all chambers - patron_in_weapon, patron_in_weapon_000 etc @@ -79,7 +79,7 @@ export declare class BotWeaponGenerator { * @param ammoTpl Cartridge to add to weapon * @param chamberSlotIds name of slots to create or add ammo to */ - protected addCartridgeToChamber(weaponWithModsArray: Item[], ammoTpl: string, chamberSlotIds: string[]): void; + protected addCartridgeToChamber(weaponWithModsArray: IItem[], ammoTpl: string, chamberSlotIds: string[]): void; /** * Create array with weapon base as only element and * add additional properties based on weapon type @@ -90,7 +90,7 @@ export declare class BotWeaponGenerator { * @param botRole for durability values * @returns Base weapon item in array */ - protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): Item[]; + protected constructWeaponBaseArray(weaponTpl: string, weaponParentId: string, equipmentSlot: string, weaponItemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Get the mods necessary to kit out a weapon to its preset level * @param weaponTpl weapon to find preset for @@ -98,14 +98,14 @@ export declare class BotWeaponGenerator { * @param weaponParentId Value used for the parentid * @returns array of weapon mods */ - protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): Item[]; + protected getPresetWeaponMods(weaponTpl: string, equipmentSlot: string, weaponParentId: string, itemTemplate: ITemplateItem, botRole: string): IItem[]; /** * Checks if all required slots are occupied on a weapon and all it's mods * @param weaponItemArray Weapon + mods * @param botRole role of bot weapon is for * @returns true if valid */ - protected isWeaponValid(weaponItemArray: Item[], botRole: string): boolean; + protected isWeaponValid(weaponItemArray: IItem[], botRole: string): boolean; /** * Generates extra magazines or bullets (if magazine is internal) and adds them to TacticalVest and Pockets. * Additionally, adds extra bullets to SecuredContainer @@ -114,14 +114,14 @@ export declare class BotWeaponGenerator { * @param inventory Inventory to add magazines to * @param botRole The bot type we're getting generating extra mags for */ - addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: GenerationData, inventory: PmcInventory, botRole: string): void; + addExtraMagazinesToInventory(generatedWeaponResult: GenerateWeaponResult, magWeights: IGenerationData, inventory: PmcInventory, botRole: string): void; /** * Add Grendaes for UBGL to bots vest and secure container * @param weaponMods Weapon array with mods * @param generatedWeaponResult result of weapon generation * @param inventory bot inventory to add grenades to */ - protected addUbglGrenadesToBotInventory(weaponMods: Item[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; + protected addUbglGrenadesToBotInventory(weaponMods: IItem[], generatedWeaponResult: GenerateWeaponResult, inventory: PmcInventory): void; /** * Add ammo to the secure container * @param stackCount How many stacks of ammo to add @@ -137,14 +137,20 @@ export declare class BotWeaponGenerator { * @param botRole the bot type we are getting the magazine for * @returns magazine tpl string */ - protected getMagazineTplFromWeaponTemplate(weaponMods: Item[], weaponTemplate: ITemplateItem, botRole: string): string; + protected getMagazineTplFromWeaponTemplate(weaponMods: IItem[], weaponTemplate: ITemplateItem, botRole: string): string; /** * Finds and return a compatible ammo tpl based on the bots ammo weightings (x.json/inventory/equipment/ammo) - * @param ammo a list of ammo tpls the weapon can use - * @param weaponTemplate the weapon we want to pick ammo for - * @returns an ammo tpl that works with the desired gun + * @param cartridgePool Dict of all cartridges keyed by type e.g. Caliber556x45NATO + * @param weaponTemplate Weapon details from db we want to pick ammo for + * @returns Ammo tpl that works with the desired gun */ - protected getWeightedCompatibleAmmo(ammo: Record>, weaponTemplate: ITemplateItem): string; + protected getWeightedCompatibleAmmo(cartridgePool: Record>, weaponTemplate: ITemplateItem): string; + /** + * Get the cartridge ids from a weapon template that work with the weapon + * @param weaponTemplate Weapon db template to get cartridges for + * @returns Array of cartridge tpls + */ + protected getCompatibleCartridgesFromWeaponTemplate(weaponTemplate: ITemplateItem): string[]; /** * Get a weapons compatible cartridge caliber * @param weaponTemplate Weapon to look up caliber of @@ -157,14 +163,14 @@ export declare class BotWeaponGenerator { * @param magazine Magazine item * @param cartridgeTpl Cartridge to insert into magazine */ - protected fillExistingMagazines(weaponMods: Item[], magazine: Item, cartridgeTpl: string): void; + protected fillExistingMagazines(weaponMods: IItem[], magazine: IItem, cartridgeTpl: string): void; /** * Add desired ammo tpl as item to weaponmods array, placed as child to UBGL * @param weaponMods Weapon with children * @param ubglMod UBGL item * @param ubglAmmoTpl Grenade ammo tpl */ - protected fillUbgl(weaponMods: Item[], ubglMod: Item, ubglAmmoTpl: string): void; + protected fillUbgl(weaponMods: IItem[], ubglMod: IItem, ubglAmmoTpl: string): void; /** * Add cartridge item to weapon Item array, if it already exists, update * @param weaponWithMods Weapon items array to amend @@ -173,12 +179,12 @@ export declare class BotWeaponGenerator { * @param newStackSize how many cartridges should go into the magazine * @param magazineTemplate magazines db template */ - protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: Item[], magazine: Item, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; + protected addOrUpdateMagazinesChildWithAmmo(weaponWithMods: IItem[], magazine: IItem, chosenAmmoTpl: string, magazineTemplate: ITemplateItem): void; /** * Fill each Camora with a bullet * @param weaponMods Weapon mods to find and update camora mod(s) from * @param magazineId magazine id to find and add to * @param ammoTpl ammo template id to hydate with */ - protected fillCamorasWithAmmo(weaponMods: Item[], magazineId: string, ammoTpl: string): void; + protected fillCamorasWithAmmo(weaponMods: IItem[], magazineId: string, ammoTpl: string): void; } diff --git a/TypeScript/9RouterHooks/types/generators/FenceBaseAssortGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/FenceBaseAssortGenerator.d.ts index 784022f..b6ef72b 100644 --- a/TypeScript/9RouterHooks/types/generators/FenceBaseAssortGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/FenceBaseAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -47,7 +47,7 @@ export declare class FenceBaseAssortGenerator { * @param armor Armor item array to add mods into * @param itemDbDetails Armor items db template */ - protected addChildrenToArmorModSlots(armor: Item[], itemDbDetails: ITemplateItem): void; + protected addChildrenToArmorModSlots(armor: IItem[], itemDbDetails: ITemplateItem): void; /** * Check if item is valid for being added to fence assorts * @param item Item to check diff --git a/TypeScript/9RouterHooks/types/generators/LocationGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/LocationGenerator.d.ts deleted file mode 100644 index 9a2b0c4..0000000 --- a/TypeScript/9RouterHooks/types/generators/LocationGenerator.d.ts +++ /dev/null @@ -1,150 +0,0 @@ -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 { MathUtil } from "@spt/utils/MathUtil"; -import { ObjectId } from "@spt/utils/ObjectId"; -import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; -import { ICloner } from "@spt/utils/cloners/ICloner"; -export interface IContainerItem { - items: Item[]; - width: number; - height: number; -} -export interface IContainerGroupCount { - /** Containers this group has + probabilty to spawn */ - containerIdsWithProbability: Record; - /** How many containers the map should spawn with this group id */ - chosenCount: number; -} -export declare class LocationGenerator { - protected logger: ILogger; - protected databaseService: DatabaseService; - protected objectId: ObjectId; - protected randomUtil: RandomUtil; - 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, 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 - * @returns Array of container objects - */ - generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): SpawnpointTemplate[]; - /** - * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist - * @param staticContainers - * @returns IStaticContainerData array - */ - protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; - /** - * Get containers with 100% spawn rate or have a type on the randomistion ignore list - * @param staticContainersOnMap - * @returns IStaticContainerData array - */ - protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; - /** - * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount - * @param groupId Name of the group the containers are being collected for - * @param containerData Containers and probability values for a groupId - * @returns List of chosen container Ids - */ - protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; - /** - * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map - * @param containersGroups Container group values - * @returns dictionary keyed by groupId - */ - protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; - /** - * Choose loot to put into a static container based on weighting - * Handle forced items + seasonal item removal when not in season - * @param staticContainer The container itself we will add loot to - * @param staticForced Loot we need to force into the container - * @param staticLootDist staticLoot.json - * @param staticAmmoDist staticAmmo.json - * @param locationName Name of the map to generate static loot for - * @returns IStaticContainerProps - */ - protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; - /** - * Get a 2d grid of a containers item slots - * @param containerTpl Tpl id of the container - * @returns number[][] - */ - protected getContainerMapping(containerTpl: string): number[][]; - /** - * Look up a containers itemcountDistribution data and choose an item count based on the found weights - * @param containerTypeId Container to get item count for - * @param staticLootDist staticLoot.json - * @param locationName Map name (to get per-map multiplier for from config) - * @returns item count - */ - protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; - /** - * Get all possible loot items that can be placed into a container - * Do not add seasonal items if found + current date is inside seasonal event - * @param containerTypeId Contianer to get possible loot for - * @param staticLootDist staticLoot.json - * @returns ProbabilityObjectArray of item tpls + probabilty - */ - protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; - protected getLooseLootMultiplerForLocation(location: string): number; - protected getStaticLootMultiplerForLocation(location: string): number; - /** - * Create array of loose + forced loot using probability system - * @param dynamicLootDist - * @param staticAmmoDist - * @param locationName Location to generate loot for - * @returns Array of spawn points with loot in them - */ - generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): SpawnpointTemplate[]; - /** - * Add forced spawn point loot into loot parameter array - * @param lootLocationTemplates array to add forced loot spawn locations to - * @param forcedSpawnPoints forced Forced loot locations that must be added - * @param locationName Name of map currently having force loot created for - */ - protected addForcedLoot(lootLocationTemplates: SpawnpointTemplate[], forcedSpawnPoints: SpawnpointsForced[], locationName: string): void; - /** - * Create array of item (with child items) and return - * @param chosenComposedKey Key we want to look up items for - * @param spawnPoint Dynamic spawn point item we want will be placed in - * @param staticAmmoDist ammo distributions - * @returns IContainerItem - */ - protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: Spawnpoint, staticAmmoDist: Record): IContainerItem; - /** - * Replace the _id value for base item + all children items parentid value - * @param itemWithChildren Item with mods to update - * @param newId new id to add on chidren of base item - */ - protected reparentItemAndChildren(itemWithChildren: Item[], newId?: string): void; - /** - * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon - * @param items Items array to search - * @param chosenTpl Tpl we want to get item with - * @returns Item object - */ - protected getItemInArray(items: Item[], chosenTpl: string): Item | undefined; - protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; -} diff --git a/TypeScript/9RouterHooks/types/generators/LocationLootGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/LocationLootGenerator.d.ts new file mode 100644 index 0000000..6ef0bbc --- /dev/null +++ b/TypeScript/9RouterHooks/types/generators/LocationLootGenerator.d.ts @@ -0,0 +1,144 @@ +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, ISpawnpoint, ISpawnpointTemplate, ISpawnpointsForced } from "@spt/models/eft/common/ILooseLoot"; +import { IItem } 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 { MathUtil } from "@spt/utils/MathUtil"; +import { ObjectId } from "@spt/utils/ObjectId"; +import { ProbabilityObjectArray, RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export interface IContainerItem { + items: IItem[]; + width: number; + height: number; +} +export interface IContainerGroupCount { + /** Containers this group has + probabilty to spawn */ + containerIdsWithProbability: Record; + /** How many containers the map should spawn with this group id */ + chosenCount: number; +} +export declare class LocationLootGenerator { + protected logger: ILogger; + protected databaseService: DatabaseService; + protected objectId: ObjectId; + protected randomUtil: RandomUtil; + 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, 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 + * @returns Array of container objects + */ + generateStaticContainers(locationBase: ILocationBase, staticAmmoDist: Record): ISpawnpointTemplate[]; + /** + * Get containers with a non-100% chance to spawn OR are NOT on the container type randomistion blacklist + * @param staticContainers + * @returns IStaticContainerData array + */ + protected getRandomisableContainersOnMap(staticContainers: IStaticContainerData[]): IStaticContainerData[]; + /** + * Get containers with 100% spawn rate or have a type on the randomistion ignore list + * @param staticContainersOnMap + * @returns IStaticContainerData array + */ + protected getGuaranteedContainers(staticContainersOnMap: IStaticContainerData[]): IStaticContainerData[]; + /** + * Choose a number of containers based on their probabilty value to fulfil the desired count in containerData.chosenCount + * @param groupId Name of the group the containers are being collected for + * @param containerData Containers and probability values for a groupId + * @returns List of chosen container Ids + */ + protected getContainersByProbabilty(groupId: string, containerData: IContainerGroupCount): string[]; + /** + * Get a mapping of each groupid and the containers in that group + count of containers to spawn on map + * @param containersGroups Container group values + * @returns dictionary keyed by groupId + */ + protected getGroupIdToContainerMappings(staticContainerGroupData: IStaticContainer | Record, staticContainersOnMap: IStaticContainerData[]): Record; + /** + * Choose loot to put into a static container based on weighting + * Handle forced items + seasonal item removal when not in season + * @param staticContainer The container itself we will add loot to + * @param staticForced Loot we need to force into the container + * @param staticLootDist staticLoot.json + * @param staticAmmoDist staticAmmo.json + * @param locationName Name of the map to generate static loot for + * @returns IStaticContainerProps + */ + protected addLootToContainer(staticContainer: IStaticContainerData, staticForced: IStaticForcedProps[], staticLootDist: Record, staticAmmoDist: Record, locationName: string): IStaticContainerData; + /** + * Get a 2d grid of a containers item slots + * @param containerTpl Tpl id of the container + * @returns number[][] + */ + protected getContainerMapping(containerTpl: string): number[][]; + /** + * Look up a containers itemcountDistribution data and choose an item count based on the found weights + * @param containerTypeId Container to get item count for + * @param staticLootDist staticLoot.json + * @param locationName Map name (to get per-map multiplier for from config) + * @returns item count + */ + protected getWeightedCountOfContainerItems(containerTypeId: string, staticLootDist: Record, locationName: string): number; + /** + * Get all possible loot items that can be placed into a container + * Do not add seasonal items if found + current date is inside seasonal event + * @param containerTypeId Contianer to get possible loot for + * @param staticLootDist staticLoot.json + * @returns ProbabilityObjectArray of item tpls + probabilty + */ + protected getPossibleLootItemsForContainer(containerTypeId: string, staticLootDist: Record): ProbabilityObjectArray; + protected getLooseLootMultiplerForLocation(location: string): number; + protected getStaticLootMultiplerForLocation(location: string): number; + /** + * Create array of loose + forced loot using probability system + * @param dynamicLootDist + * @param staticAmmoDist + * @param locationName Location to generate loot for + * @returns Array of spawn points with loot in them + */ + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; + /** + * Add forced spawn point loot into loot parameter array + * @param lootLocationTemplates array to add forced loot spawn locations to + * @param forcedSpawnPoints forced Forced loot locations that must be added + * @param locationName Name of map currently having force loot created for + */ + protected addForcedLoot(lootLocationTemplates: ISpawnpointTemplate[], forcedSpawnPoints: ISpawnpointsForced[], locationName: string): void; + /** + * Create array of item (with child items) and return + * @param chosenComposedKey Key we want to look up items for + * @param spawnPoint Dynamic spawn point item we want will be placed in + * @param staticAmmoDist ammo distributions + * @returns IContainerItem + */ + protected createDynamicLootItem(chosenComposedKey: string, spawnPoint: ISpawnpoint, staticAmmoDist: Record): IContainerItem; + /** + * Find an item in array by its _tpl, handle differently if chosenTpl is a weapon + * @param items Items array to search + * @param chosenTpl Tpl we want to get item with + * @returns Item object + */ + protected getItemInArray(items: IItem[], chosenTpl: string): IItem | undefined; + protected createStaticLootItem(chosenTpl: string, staticAmmoDist: Record, parentId?: string): IContainerItem; +} diff --git a/TypeScript/9RouterHooks/types/generators/LootGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/LootGenerator.d.ts index 953ac3d..37124a0 100644 --- a/TypeScript/9RouterHooks/types/generators/LootGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/LootGenerator.d.ts @@ -3,10 +3,9 @@ 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 { IItem } 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"; @@ -37,7 +36,11 @@ export declare class LootGenerator { * @param options parameters to adjust how loot is generated * @returns An array of loot items */ - createRandomLoot(options: LootRequest): LootItem[]; + createRandomLoot(options: LootRequest): IItem[]; + protected getItemRewardPool(itemTplBlacklist: string[], itemTypeWhitelist: string[], useRewardItemBlacklist: boolean, allowBossItems: boolean): { + itemPool: [string, ITemplateItem][]; + blacklist: Set; + }; /** * Filter armor items by their front plates protection level - top if its a helmet * @param armor Armor preset to check @@ -62,7 +65,7 @@ export declare class LootGenerator { protected findAndAddRandomItemToLoot(items: [string, ITemplateItem][], itemTypeCounts: Record, options: LootRequest, result: LootItem[]): boolean; + }>, options: LootRequest, result: IItem[]): boolean; /** * Get a randomised stack count for an item between its StackMinRandom and StackMaxSize values * @param item item to get stack count of @@ -81,20 +84,20 @@ export declare class LootGenerator { protected findAndAddRandomPresetToLoot(presetPool: IPreset[], itemTypeCounts: Record, itemBlacklist: string[], result: LootItem[]): boolean; + }>, itemBlacklist: string[], result: IItem[]): 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 item with children arrays */ - getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): Item[][]; + getSealedWeaponCaseLoot(containerSettings: ISealedAirdropContainerSettings): IItem[][]; /** * 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 Array of item with children arrays */ - protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): Item[][]; + protected getSealedContainerNonWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, weaponDetailsDb: ITemplateItem): IItem[][]; /** * Iterate over the container weaponModRewardLimits settings and create an array of weapon mods to reward player * @param containerSettings Sealed weapon container settings @@ -102,12 +105,18 @@ export declare class LootGenerator { * @param chosenWeaponPreset The weapon preset given to player as reward * @returns Array of item with children arrays */ - protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): Item[][]; + protected getSealedContainerWeaponModRewards(containerSettings: ISealedAirdropContainerSettings, linkedItemsToWeapon: ITemplateItem[], chosenWeaponPreset: IPreset): IItem[][]; /** * Handle event-related loot containers - currently just the halloween jack-o-lanterns that give food rewards * @param rewardContainerDetails * @returns Array of item with children arrays */ - getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): Item[][]; + getRandomLootContainerLoot(rewardContainerDetails: RewardDetails): IItem[][]; + /** + * Pick a reward item based on the reward details data + * @param rewardContainerDetails + * @returns Single tpl + */ + protected pickRewardItem(rewardContainerDetails: RewardDetails): string; } export {}; diff --git a/TypeScript/9RouterHooks/types/generators/PlayerScavGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/PlayerScavGenerator.d.ts index e317bf6..8625529 100644 --- a/TypeScript/9RouterHooks/types/generators/PlayerScavGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/PlayerScavGenerator.d.ts @@ -4,7 +4,7 @@ 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 { IBotBase, ISkills, IStats } 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"; @@ -68,9 +68,9 @@ export declare class PlayerScavGenerator { * @param baseBotNode bot template to modify according to karama level settings */ protected adjustBotTemplateWithKarmaSpecificSettings(karmaSettings: KarmaLevel, baseBotNode: IBotType): void; - protected getScavSkills(scavProfile: IPmcData): Skills; - protected getDefaultScavSkills(): Skills; - protected getScavStats(scavProfile: IPmcData): Stats; + protected getScavSkills(scavProfile: IPmcData): ISkills; + protected getDefaultScavSkills(): ISkills; + protected getScavStats(scavProfile: IPmcData): IStats; protected getScavLevel(scavProfile: IPmcData): number; protected getScavExperience(scavProfile: IPmcData): number; /** diff --git a/TypeScript/9RouterHooks/types/generators/RagfairAssortGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/RagfairAssortGenerator.d.ts index 4c6cf1c..60c4c86 100644 --- a/TypeScript/9RouterHooks/types/generators/RagfairAssortGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/RagfairAssortGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -14,7 +14,7 @@ export declare class RagfairAssortGenerator { protected databaseServer: DatabaseServer; protected seasonalEventService: SeasonalEventService; protected configServer: ConfigServer; - protected generatedAssortItems: Item[][]; + protected generatedAssortItems: IItem[][]; protected ragfairConfig: IRagfairConfig; protected ragfairItemInvalidBaseTypes: string[]; constructor(hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, databaseServer: DatabaseServer, seasonalEventService: SeasonalEventService, configServer: ConfigServer); @@ -23,7 +23,7 @@ export declare class RagfairAssortGenerator { * Each sub array contains item + children (if any) * @returns array of arrays */ - getAssortItems(): Item[][]; + getAssortItems(): IItem[][]; /** * Check internal generatedAssortItems array has objects * @returns true if array has objects @@ -33,7 +33,7 @@ export declare class RagfairAssortGenerator { * Generate an array of arrays (item + children) the flea can sell * @returns array of arrays (item + children) */ - protected generateRagfairAssortItems(): Item[][]; + protected generateRagfairAssortItems(): IItem[][]; /** * Get presets from globals to add to flea * ragfairConfig.dynamic.showDefaultPresetsOnly decides if its all presets or just defaults @@ -46,5 +46,5 @@ export declare class RagfairAssortGenerator { * @param id id to add to item * @returns Hydrated Item object */ - protected createRagfairAssortRootItem(tplId: string, id?: string): Item; + protected createRagfairAssortRootItem(tplId: string, id?: string): IItem; } diff --git a/TypeScript/9RouterHooks/types/generators/RagfairOfferGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/RagfairOfferGenerator.d.ts index ca09729..02e5cea 100644 --- a/TypeScript/9RouterHooks/types/generators/RagfairOfferGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/RagfairOfferGenerator.d.ts @@ -6,7 +6,7 @@ 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 { IItem } 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"; @@ -62,7 +62,7 @@ export declare class RagfairOfferGenerator { * @param sellInOnePiece Flags sellInOnePiece to be true * @returns Created flea offer */ - createAndAddFleaOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; + createAndAddFleaOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, sellInOnePiece?: boolean): IRagfairOffer; /** * Create an offer object ready to send to ragfairOfferService.addOffer() * @param userID Owner of the offer @@ -73,7 +73,7 @@ export declare class RagfairOfferGenerator { * @param isPackOffer Is offer being created flaged as a pack * @returns IRagfairOffer */ - protected createOffer(userID: string, time: number, items: Item[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; + protected createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, isPackOffer?: boolean): IRagfairOffer; /** * Create the user object stored inside each flea offer object * @param userID user creating the offer @@ -130,20 +130,20 @@ 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?: IItem[][]): Promise; /** * @param assortItemWithChildren Item with its children to process into offers * @param isExpiredOffer is an expired offer * @param config Ragfair dynamic config */ - protected createOffersFromAssort(assortItemWithChildren: Item[], isExpiredOffer: boolean, config: Dynamic): Promise; + protected createOffersFromAssort(assortItemWithChildren: IItem[], 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; + protected removeBannedPlatesFromPreset(presetWithChildren: IItem[], plateSettings: IArmorPlateBlacklistSettings): boolean; /** * Create one flea offer for a specific item * @param itemWithChildren Item to create offer for @@ -151,7 +151,7 @@ export declare class RagfairOfferGenerator { * @param itemDetails raw db item details * @returns Item array */ - protected createSingleOfferForItem(itemWithChildren: Item[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; + protected createSingleOfferForItem(itemWithChildren: IItem[], isPreset: boolean, itemDetails: [boolean, ITemplateItem]): Promise; /** * Generate trader offers on flea using the traders assort data * @param traderID Trader to generate offers for @@ -164,7 +164,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item and mods, get condition of first item (only first array item is modified) * @param itemDetails db details of first item */ - protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseOfferItemUpdProperties(userID: string, itemWithMods: IItem[], 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 @@ -177,7 +177,7 @@ export declare class RagfairOfferGenerator { * @param itemWithMods Item to adjust condition details of * @param itemDetails db item details of first item in array */ - protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: Item[], itemDetails: ITemplateItem): void; + protected randomiseItemCondition(conditionSettingsId: string, itemWithMods: IItem[], itemDetails: ITemplateItem): void; /** * Adjust an items durability/maxDurability value * @param item item (weapon/armor) to Adjust @@ -185,27 +185,27 @@ export declare class RagfairOfferGenerator { * @param maxMultiplier Value to multiply max durability by * @param currentMultiplier Value to multiply current durability by */ - protected randomiseWeaponDurability(item: Item, itemDbDetails: ITemplateItem, maxMultiplier: number, currentMultiplier: number): void; + protected randomiseWeaponDurability(item: IItem, 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; + protected randomiseArmorDurabilityValues(armorWithMods: IItem[], 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 */ - protected addMissingConditions(item: Item): void; + protected addMissingConditions(item: IItem): 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 * @returns Barter scheme */ - protected createBarterBarterScheme(offerItems: Item[]): IBarterScheme[]; + protected createBarterBarterScheme(offerItems: IItem[]): IBarterScheme[]; /** * Get an array of flea prices + item tpl, cached in generator class inside `allowedFleaPriceItemsForBarter` * @returns array with tpl/price values @@ -221,5 +221,5 @@ export declare class RagfairOfferGenerator { * @param multipler What to multiply the resulting price by * @returns Barter scheme for offer */ - protected createCurrencyBarterScheme(offerWithChildren: Item[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; + protected createCurrencyBarterScheme(offerWithChildren: IItem[], isPackOffer: boolean, multipler?: number): IBarterScheme[]; } diff --git a/TypeScript/9RouterHooks/types/generators/RepeatableQuestGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/RepeatableQuestGenerator.d.ts index 866c4ec..79a10fc 100644 --- a/TypeScript/9RouterHooks/types/generators/RepeatableQuestGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/RepeatableQuestGenerator.d.ts @@ -1,8 +1,8 @@ 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 { IExit } from "@spt/models/eft/common/ILocationBase"; +import { ITraderInfo } 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"; @@ -39,7 +39,7 @@ export declare class RepeatableQuestGenerator { * @param repeatableConfig Repeatable quest config * @returns IRepeatableQuest */ - generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; + generateRepeatableQuest(pmcLevel: number, pmcTraderInfo: Record, questTypePool: IQuestTypePool, repeatableConfig: IRepeatableQuestConfig): IRepeatableQuest; /** * Generate a randomised Elimination quest * @param pmcLevel Player's level for requested items and reward generation @@ -109,7 +109,7 @@ export declare class RepeatableQuestGenerator { * @param playerSide Scav/Pmc * @returns Array of Exit objects */ - protected getLocationExitsForSide(locationKey: string, playerSide: string): Exit[]; + protected getLocationExitsForSide(locationKey: string, playerSide: string): IExit[]; 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) @@ -124,7 +124,7 @@ export declare class RepeatableQuestGenerator { * @param {string} exit The exit name to generate the condition for * @returns {object} Exit condition */ - protected generateExplorationExitCondition(exit: Exit): IQuestConditionCounterCondition; + protected generateExplorationExitCondition(exit: IExit): 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/9RouterHooks/types/generators/RepeatableQuestRewardGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/RepeatableQuestRewardGenerator.d.ts index 713a394..17f4fd4 100644 --- a/TypeScript/9RouterHooks/types/generators/RepeatableQuestRewardGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/RepeatableQuestRewardGenerator.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -133,7 +133,7 @@ export declare class RepeatableQuestRewardGenerator { * @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; + protected generatePresetReward(tpl: string, count: number, index: number, preset?: IItem[]): IQuestReward; /** * Picks rewardable items from items.json * This means they must: diff --git a/TypeScript/9RouterHooks/types/generators/ScavCaseRewardGenerator.d.ts b/TypeScript/9RouterHooks/types/generators/ScavCaseRewardGenerator.d.ts index 45f2e51..194b705 100644 --- a/TypeScript/9RouterHooks/types/generators/ScavCaseRewardGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/generators/ScavCaseRewardGenerator.d.ts @@ -1,6 +1,6 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; import { PresetHelper } from "@spt/helpers/PresetHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -36,7 +36,7 @@ export declare class ScavCaseRewardGenerator { * @param recipeId recipe of the scav case craft * @returns Product array */ - generate(recipeId: string): Item[][]; + generate(recipeId: string): IItem[][]; /** * Get all db items that are not blacklisted in scavcase config or global blacklist * Store in class field @@ -75,7 +75,7 @@ export declare class ScavCaseRewardGenerator { * @param rewardItems items to convert * @returns Product array */ - protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): Item[][]; + protected randomiseContainerItemRewards(rewardItems: ITemplateItem[], rarity: string): IItem[][]; /** * @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/9RouterHooks/types/generators/weapongen/InventoryMagGen.d.ts b/TypeScript/9RouterHooks/types/generators/weapongen/InventoryMagGen.d.ts index 1db9915..7e2011d 100644 --- a/TypeScript/9RouterHooks/types/generators/weapongen/InventoryMagGen.d.ts +++ b/TypeScript/9RouterHooks/types/generators/weapongen/InventoryMagGen.d.ts @@ -1,5 +1,5 @@ -import { Inventory } from "@spt/models/eft/common/tables/IBotBase"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class InventoryMagGen { private magCounts; @@ -7,10 +7,10 @@ export declare class InventoryMagGen { private weaponTemplate; private ammoTemplate; private pmcInventory; - constructor(magCounts: GenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: Inventory); - getMagCount(): GenerationData; + constructor(magCounts: IGenerationData, magazineTemplate: ITemplateItem, weaponTemplate: ITemplateItem, ammoTemplate: ITemplateItem, pmcInventory: IInventory); + getMagCount(): IGenerationData; getMagazineTemplate(): ITemplateItem; getWeaponTemplate(): ITemplateItem; getAmmoTemplate(): ITemplateItem; - getPmcInventory(): Inventory; + getPmcInventory(): IInventory; } diff --git a/TypeScript/9RouterHooks/types/helpers/BotDifficultyHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/BotDifficultyHelper.d.ts index 2348bd3..ef30bbc 100644 --- a/TypeScript/9RouterHooks/types/helpers/BotDifficultyHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/BotDifficultyHelper.d.ts @@ -1,5 +1,6 @@ import { BotHelper } from "@spt/helpers/BotHelper"; -import { Difficulty } from "@spt/models/eft/common/tables/IBotType"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; +import { IBots } from "@spt/models/spt/bots/IBots"; import { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; import { ILogger } from "@spt/models/spt/utils/ILogger"; import { ConfigServer } from "@spt/servers/ConfigServer"; @@ -17,42 +18,21 @@ export declare class BotDifficultyHelper { protected cloner: ICloner; protected pmcConfig: IPmcConfig; 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 * @param difficulty difficulty to get settings for (easy/normal etc) + * @param botDb bots from database * @returns Difficulty object */ - getBotDifficultySettings(type: string, difficulty: string): Difficulty; + getBotDifficultySettings(type: string, difficulty: string, botDb: IBots): IDifficultyCategories; /** * Get difficulty settings for a PMC * @param type "usec" / "bear" * @param difficulty what difficulty to retrieve * @returns Difficulty object */ - protected getDifficultySettings(type: string, difficulty: string): Difficulty; + protected getDifficultySettings(type: string, difficulty: string): IDifficultyCategories; /** * Translate chosen value from pre-raid difficulty dropdown into bot difficulty value * @param dropDownDifficulty Dropdown difficulty value to convert diff --git a/TypeScript/9RouterHooks/types/helpers/BotGeneratorHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/BotGeneratorHelper.d.ts index 00ae8ae..468d27b 100644 --- a/TypeScript/9RouterHooks/types/helpers/BotGeneratorHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/BotGeneratorHelper.d.ts @@ -3,9 +3,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { IGrid, 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"; @@ -37,7 +37,7 @@ export declare class BotGeneratorHelper { * @returns Item Upd object with extra properties */ generateExtraPropertiesForItem(itemTemplate: ITemplateItem, botRole?: string): { - upd?: Upd; + upd?: IUpd; }; /** * Randomize the HpResource for bots e.g (245/400 resources) @@ -60,15 +60,14 @@ export declare class BotGeneratorHelper { * @param botRole type of bot being generated for * @returns Repairable object */ - protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): Repairable; + protected generateWeaponRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * 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; - isWeaponModIncompatibleWithCurrentMods(itemsEquipped: Item[], tplToCheck: string, modSlot: string): IChooseRandomCompatibleModResult; + protected generateArmorRepairableProperties(itemTemplate: ITemplateItem, botRole?: string): IUpdRepairable; /** * Can item be added to another item without conflict * @param itemsEquipped Items to check compatibilities with @@ -76,7 +75,7 @@ export declare class BotGeneratorHelper { * @param equipmentSlot Slot the item will be placed into * @returns false if no incompatibilities, also has incompatibility reason */ - isItemIncompatibleWithCurrentItems(itemsEquipped: Item[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; + isItemIncompatibleWithCurrentItems(itemsEquipped: IItem[], tplToCheck: string, equipmentSlot: string): IChooseRandomCompatibleModResult; /** * Convert a bots role to the equipment role used in config/bot.json * @param botRole Role to convert @@ -92,12 +91,12 @@ export declare class BotGeneratorHelper { * @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; + addItemWithChildrenToEquipmentSlot(equipmentSlots: string[], rootItemId: string, rootItemTplId: string, itemWithChildren: IItem[], inventory: IInventory, 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; + protected itemAllowedInContainer(slotGrid: IGrid, itemTpl: string): boolean; } diff --git a/TypeScript/9RouterHooks/types/helpers/BotHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/BotHelper.d.ts index c5871ae..1058942 100644 --- a/TypeScript/9RouterHooks/types/helpers/BotHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/BotHelper.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Difficulty, IBotType } from "@spt/models/eft/common/tables/IBotType"; +import { IBotType, IDifficultyCategories } 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"; @@ -33,20 +33,15 @@ export declare class BotHelper { * @param difficultySettings bot settings to alter * @param typeToAdd bot type to add to friendly list */ - addBotToFriendlyList(difficultySettings: Difficulty, typeToAdd: string): void; + addBotToFriendlyList(difficultySettings: IDifficultyCategories, typeToAdd: string): void; /** * Add a bot to the REVENGE_BOT_TYPES array * @param difficultySettings bot settings to alter * @param typesToAdd bot type to add to revenge list */ - addBotToRevengeList(difficultySettings: Difficulty, typesToAdd: string[]): void; - /** - * Choose if a bot should become a PMC by checking if bot type is allowed to become a Pmc in botConfig.convertFromChances and doing a random int check - * @param botRole the bot role to check if should be a pmc - * @returns true if should be a pmc - */ - shouldBotBePmc(botRole: string): boolean; - rollChanceToBePmc(role: string, botConvertMinMax: MinMax): boolean; + addBotToRevengeList(difficultySettings: IDifficultyCategories, typesToAdd: string[]): void; + rollChanceToBePmc(botConvertMinMax: MinMax): boolean; + protected getPmcConversionValuesForLocation(location: string): Record; /** * is the provided role a PMC, case-agnostic * @param botRole Role to check diff --git a/TypeScript/9RouterHooks/types/helpers/BotWeaponGeneratorHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/BotWeaponGeneratorHelper.d.ts index 5ab4e59..8a2d23a 100644 --- a/TypeScript/9RouterHooks/types/helpers/BotWeaponGeneratorHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/BotWeaponGeneratorHelper.d.ts @@ -1,9 +1,9 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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"; @@ -27,13 +27,13 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate magazine to generate bullet count for * @returns bullet count number */ - getRandomizedBulletCount(magCounts: GenerationData, magTemplate: ITemplateItem): number; + getRandomizedBulletCount(magCounts: IGenerationData, magTemplate: ITemplateItem): number; /** * Get a randomized count of magazines * @param magCounts min and max value returned value can be between * @returns numerical value of magazine count */ - getRandomizedMagazineCount(magCounts: GenerationData): number; + getRandomizedMagazineCount(magCounts: IGenerationData): number; /** * Is this magazine cylinder related (revolvers and grenade launchers) * @param magazineParentName the name of the magazines parent @@ -47,7 +47,7 @@ export declare class BotWeaponGeneratorHelper { * @param magTemplate template object of magazine * @returns Item array */ - createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): Item[]; + createMagazineWithAmmo(magazineTpl: string, ammoTpl: string, magTemplate: ITemplateItem): IItem[]; /** * Add a specific number of cartridges to a bots inventory (defaults to vest and pockets) * @param ammoTpl Ammo tpl to add to vest/pockets @@ -55,7 +55,7 @@ export declare class BotWeaponGeneratorHelper { * @param inventory bot inventory to add cartridges to * @param equipmentSlotsToAddTo what equipment slots should bullets be added into */ - addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: Inventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; + addAmmoIntoEquipmentSlots(ammoTpl: string, cartridgeCount: number, inventory: IInventory, equipmentSlotsToAddTo?: EquipmentSlots[]): void; /** * Get a weapons default magazine template id * @param weaponTemplate weapon to get default magazine for diff --git a/TypeScript/9RouterHooks/types/helpers/DialogueHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/DialogueHelper.d.ts index febe696..4f0a2cb 100644 --- a/TypeScript/9RouterHooks/types/helpers/DialogueHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/DialogueHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -31,7 +31,7 @@ export declare class DialogueHelper { * @param itemId Item being moved to inventory * @returns */ - getMessageItemContents(messageID: string, sessionID: string, itemId: string): Item[]; + getMessageItemContents(messageID: string, sessionID: string, itemId: string): IItem[]; /** * Get the dialogs dictionary for a profile, create if doesnt exist * @param sessionId Session/player id diff --git a/TypeScript/9RouterHooks/types/helpers/HandbookHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/HandbookHelper.d.ts index 0ed965e..d677734 100644 --- a/TypeScript/9RouterHooks/types/helpers/HandbookHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/HandbookHelper.d.ts @@ -1,5 +1,5 @@ -import { Category } from "@spt/models/eft/common/tables/IHandbookBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IHandbookCategory } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -33,7 +33,7 @@ export declare class HandbookHelper { * @returns price in roubles */ getTemplatePrice(tpl: string): number; - getTemplatePriceForItems(items: Item[]): number; + getTemplatePriceForItems(items: IItem[]): number; /** * Get all items in template with the given parent category * @param parentId @@ -66,6 +66,6 @@ export declare class HandbookHelper { * @returns currency count in desired type */ fromRUB(roubleCurrencyCount: number, currencyTypeTo: string): number; - getCategoryById(handbookId: string): Category; + getCategoryById(handbookId: string): IHandbookCategory; } export {}; diff --git a/TypeScript/9RouterHooks/types/helpers/HealthHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/HealthHelper.d.ts index a164285..73ce2b8 100644 --- a/TypeScript/9RouterHooks/types/helpers/HealthHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/HealthHelper.d.ts @@ -1,4 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBodyPartsHealth, IHealth } from "@spt/models/eft/common/tables/IBotBase"; 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"; @@ -21,6 +22,23 @@ export declare class HealthHelper { * @returns updated profile */ resetVitality(sessionID: string): ISptProfile; + /** + * Update player profile vitality values with changes from client request object + * @param pmcData Player profile + * @param postRaidHealth Post raid data + * @param sessionID Session id + * @param isDead Is player dead + * @param addEffects Should effects be added to profile (default - true) + * @param deleteExistingEffects Should all prior effects be removed before apply new ones (default - true) + */ + updateProfileHealthPostRaid(pmcData: IPmcData, postRaidHealth: IHealth, sessionID: string, isDead: boolean): void; + protected storeHydrationEnergyTempInProfile(fullProfile: ISptProfile, hydration: number, energy: number, temprature: number): void; + /** + * Take body part effects from client profile and apply to server profile + * @param postRaidBodyParts Post-raid body part data + * @param profileData Player profile on server + */ + protected transferPostRaidLimbEffectsToProfile(postRaidBodyParts: IBodyPartsHealth, profileData: IPmcData): void; /** * Update player profile vitality values with changes from client request object * @param pmcData Player profile diff --git a/TypeScript/9RouterHooks/types/helpers/HideoutHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/HideoutHelper.d.ts index df0376b..5917927 100644 --- a/TypeScript/9RouterHooks/types/helpers/HideoutHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/HideoutHelper.d.ts @@ -2,9 +2,9 @@ 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 { IBotHideoutArea, IHideoutImprovement, IProduction, IProductive } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd } from "@spt/models/eft/common/tables/IItem"; +import { IHideoutArea, 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"; @@ -37,6 +37,7 @@ export declare class HideoutHelper { protected configServer: ConfigServer; protected cloner: ICloner; static bitcoinFarm: string; + static cultistCircleCraftId: string; static bitcoinProductionId: string; static waterCollector: string; static maxSkillPoint: number; @@ -54,13 +55,13 @@ export declare class HideoutHelper { * This convenience function initializes new Production Object * with all the constants. */ - initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean): Production; + initProduction(recipeId: string, productionTime: number, needFuelForAllProductionTime: boolean, isCultistCircle?: boolean): IProduction; /** * Is the provided object a Production type * @param productive * @returns */ - isProductionType(productive: Productive): productive is Production; + isProductionType(productive: IProductive): productive is IProduction; /** * Apply bonus to player profile given after completing hideout upgrades * @param pmcData Profile to add bonus to @@ -82,7 +83,7 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter: boolean; }; - protected doesWaterCollectorHaveFilter(waterCollector: HideoutArea): boolean; + protected doesWaterCollectorHaveFilter(waterCollector: IBotHideoutArea): boolean; /** * Iterate over productions and update their progress timers * @param pmcData Profile to check for productions and update @@ -116,6 +117,8 @@ export declare class HideoutHelper { isGeneratorOn: boolean; waterCollectorHasFilter?: boolean; }): void; + protected updateCultistCircleCraftProgress(pmcData: IPmcData, prodId: string): void; + protected flagCultistCircleCraftAsComplete(production: IProductive): void; /** * Check if a productions progress value matches its corresponding recipes production time value * @param pmcData Player profile @@ -147,8 +150,8 @@ export declare class HideoutHelper { * @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: { + protected updateFuel(generatorArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateWaterCollector(sessionId: string, pmcData: IPmcData, area: IBotHideoutArea, hideoutProperties: { btcFarmCGs: number; isGeneratorOn: boolean; waterCollectorHasFilter: boolean; @@ -168,7 +171,7 @@ export declare class HideoutHelper { * @param isGeneratorOn is generator enabled * @param pmcData Player profile */ - protected updateWaterFilters(waterFilterArea: HideoutArea, production: Production, isGeneratorOn: boolean, pmcData: IPmcData): void; + protected updateWaterFilters(waterFilterArea: IBotHideoutArea, production: IProduction, 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 @@ -198,15 +201,15 @@ export declare class HideoutHelper { * @param resourceUnitsConsumed * @returns Upd */ - 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; + protected getAreaUpdObject(stackCount: number, resourceValue: number, resourceUnitsConsumed: number, isFoundInRaid: boolean): IUpd; + protected updateAirFilters(airFilterArea: IBotHideoutArea, pmcData: IPmcData, isGeneratorOn: boolean): void; + protected updateBitcoinFarm(pmcData: IPmcData, btcProduction: IProductive, btcFarmCGs: number, isGeneratorOn: boolean): void; /** * Add bitcoin object to btc production products array and set progress time * @param btcProd Bitcoin production object * @param coinCraftTimeSeconds Time to craft a bitcoin */ - protected addBtcToProduction(btcProd: Production, coinCraftTimeSeconds: number): void; + protected addBtcToProduction(btcProd: IProduction, coinCraftTimeSeconds: number): void; /** * Get number of ticks that have passed since hideout areas were last processed, reduced when generator is off * @param pmcData Player profile @@ -248,7 +251,7 @@ export declare class HideoutHelper { * @returns Seconds to reduce craft time by */ getSkillProductionTimeReduction(pmcData: IPmcData, productionTime: number, skill: SkillTypes, amountPerLevel: number): number; - isProduction(productive: Productive): productive is Production; + isProduction(productive: IProductive): productive is IProduction; /** * Gather crafted BTC from hideout area and add to inventory * Reset production start timestamp if hideout area at full coin capacity @@ -286,5 +289,12 @@ export declare class HideoutHelper { * @param activeDogtags Active dogtags in place of fame dogtag slots * @returns combat bonus */ - protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: Item[]): number; + protected getDogtagCombatSkillBonusPercent(pmcData: IPmcData, activeDogtags: IItem[]): number; + /** + * The wall pollutes a profile with various temp buffs/debuffs, + * Remove them all + * @param wallAreaDb Hideout area data + * @param pmcData Player profile + */ + removeHideoutWallBuffsAndDebuffs(wallAreaDb: IHideoutArea, pmcData: IPmcData): void; } diff --git a/TypeScript/9RouterHooks/types/helpers/InRaidHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/InRaidHelper.d.ts index 987c9ec..10b40d9 100644 --- a/TypeScript/9RouterHooks/types/helpers/InRaidHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/InRaidHelper.d.ts @@ -1,122 +1,35 @@ +import { QuestController } from "@spt/controllers/QuestController"; 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 { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; 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 { RandomUtil } from "@spt/utils/RandomUtil"; -import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; +import { ProfileHelper } from "./ProfileHelper"; +import { QuestHelper } from "./QuestHelper"; export declare class InRaidHelper { protected logger: ILogger; - protected timeUtil: TimeUtil; - protected saveServer: SaveServer; - protected itemHelper: ItemHelper; - protected databaseService: DatabaseService; protected inventoryHelper: InventoryHelper; + protected itemHelper: ItemHelper; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected databaseService: DatabaseService; + protected questController: QuestController; protected profileHelper: ProfileHelper; protected questHelper: QuestHelper; - protected paymentHelper: PaymentHelper; - 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, 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 - */ - 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 - */ - addStackCountToMoneyFromRaid(items: Item[]): void; - /** - * Reset a profile to a baseline, used post-raid - * Reset points earned during session property - * Increment exp - * @param profileData Profile to update - * @param saveProgressRequest post raid save data request data - * @param sessionID Session id - * @returns Reset profile object - */ - updateProfileBaseStats(profileData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionID: string): void; + constructor(logger: ILogger, inventoryHelper: InventoryHelper, itemHelper: ItemHelper, configServer: ConfigServer, cloner: ICloner, databaseService: DatabaseService, questController: QuestController, profileHelper: ProfileHelper, questHelper: QuestHelper); /** + * @deprecated * Reset the skill points earned in a raid to 0, ready for next raid * @param profile Profile to update */ protected resetSkillPointsEarnedDuringRaid(profile: IPmcData): void; - /** Check counters are correct in profile */ - 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 - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updatePmcProfileDataPostRaid(pmcData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Update scav quest values on server profile with updated values post-raid - * @param scavData Server scav profile - * @param saveProgressRequest Post-raid request data - * @param sessionId Session id - */ - updateScavProfileDataPostRaid(scavData: IPmcData, saveProgressRequest: ISaveProgressRequestData, sessionId: string): void; - /** - * Look for quests with a status different from what it began the raid with - * @param sessionId Player id - * @param pmcData Player profile - * @param preRaidQuests Quests prior to starting raid - * @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 - * @param profileData player profile on server - */ - protected transferPostRaidLimbEffectsToProfile(saveProgressRequest: ISaveProgressRequestData, profileData: IPmcData): void; - /** - * Adjust server trader settings if they differ from data sent by client - * @param tradersServerProfile Server - * @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 - */ - protected setPlayerInRaidLocationStatusToNone(sessionID: string): void; - /** - * Iterate over inventory items and remove the property that defines an item as Found in Raid - * Only removes property if item had FiR when entering raid - * @param postRaidProfile profile to update items for - * @returns Updated profile with SpawnedInSession removed - */ - removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPostRaidPmcData): IPostRaidPmcData; /** * Update a players inventory post-raid * Remove equipped items from pre-raid @@ -126,7 +39,14 @@ export declare class InRaidHelper { * @param serverProfile Profile to update * @param postRaidProfile Profile returned by client after a raid */ - setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData): void; + setInventory(sessionID: string, serverProfile: IPmcData, postRaidProfile: IPmcData, isSurvived: boolean): void; + /** + * Iterate over inventory items and remove the property that defines an item as Found in Raid + * Only removes property if item had FiR when entering raid + * @param postRaidProfile profile to update items for + * @returns Updated profile with SpawnedInSession removed + */ + removeSpawnedInSessionPropertyFromItems(postRaidProfile: IPmcData): IPmcData; /** * Clear PMC inventory of all items except those that are exempt * Used post-raid to remove items after death @@ -134,29 +54,31 @@ export declare class InRaidHelper { * @param sessionId Session id */ deleteInventory(pmcData: IPmcData, sessionId: string): void; + /** + * Remove FiR status from designated container + * @param sessionId Session id + * @param pmcData Player profile + * @param secureContainerSlotId Container slot id to find items for and remove FiR from + */ + removeFiRStatusFromItemsInContainer(sessionId: string, pmcData: IPmcData, secureContainerSlotId: string): void; + /** + * Deletes quest conditions from pickup tasks given a list of quest items being carried by a PMC. + * @param carriedQuestItems Items carried by PMC at death, usually gotten from "CarriedQuestItems" + * @param sessionId Current sessionId + * @param pmcProfile Pre-raid profile that is being handled with raid information + */ + removePickupQuestConditions(carriedQuestItems: string[], sessionId: string, pmcProfile: IPmcData): void; /** * Get an array of items from a profile that will be lost on death * @param pmcProfile Profile to get items from * @returns Array of items lost on death */ - protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): Item[]; - /** - * Get items in vest/pocket/backpack inventory containers (excluding children) - * @param pmcData Player profile - * @returns Item array - */ - protected getBaseItemsInRigPocketAndBackpack(pmcData: IPmcData): Item[]; + protected getInventoryItemsLostOnDeath(pmcProfile: IPmcData): IItem[]; /** * Does the provided items slotId mean its kept on the player after death * @pmcData Player profile * @itemToCheck Item to check should be kept * @returns true if item is kept after death */ - protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: Item): boolean; - /** - * Return the equipped items from a players inventory - * @param items Players inventory to search through - * @returns an array of equipped items - */ - getPlayerGear(items: Item[]): Item[]; + protected isItemKeptAfterDeath(pmcData: IPmcData, itemToCheck: IItem): boolean; } diff --git a/TypeScript/9RouterHooks/types/helpers/InventoryHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/InventoryHelper.d.ts index 92bb49c..e95f340 100644 --- a/TypeScript/9RouterHooks/types/helpers/InventoryHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/InventoryHelper.d.ts @@ -6,8 +6,8 @@ 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 { IInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -65,33 +65,33 @@ export declare class InventoryHelper { * @param itemWithChildren An item * @param foundInRaid Item was found in raid */ - protected setFindInRaidStatusForItem(itemWithChildren: Item[], foundInRaid: boolean): void; + protected setFindInRaidStatusForItem(itemWithChildren: IItem[], 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; + protected removeTraderRagfairRelatedUpdProperties(upd: IUpd): 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; + canPlaceItemsInInventory(sessionId: string, itemsWithChildren: IItem[][]): 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; + canPlaceItemsInContainer(containerFS2D: number[][], itemsWithChildren: IItem[][]): 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; + canPlaceItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[]): boolean; /** * Find a free location inside a container to fit the item * @param containerFS2D Container grid to add item to @@ -99,7 +99,7 @@ export declare class InventoryHelper { * @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; + placeItemInContainer(containerFS2D: number[][], itemWithChildren: IItem[], 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 @@ -109,7 +109,7 @@ export declare class InventoryHelper { * @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; + protected placeItemInInventory(stashFS2D: number[][], sortingTableFS2D: number[][], itemWithChildren: IItem[], playerInventory: IInventory, useSortingTable: boolean, output: IItemEventRouterResponse): void; /** * Handle Remove event * Remove item from player inventory + insured items array @@ -144,7 +144,7 @@ export declare class InventoryHelper { * @param inventoryItems * @returns [width, height] */ - getItemSize(itemTpl: string, itemID: string, inventoryItems: Item[]): number[]; + getItemSize(itemTpl: string, itemID: string, inventoryItems: IItem[]): number[]; /** * Calculates the size of an item including attachements * takes into account if item is folded @@ -162,14 +162,16 @@ export declare class InventoryHelper { */ protected getBlankContainerMap(containerH: number, containerY: number): number[][]; /** + * Get a 2d mapping of a container with what grid slots are filled * @param containerH Horizontal size of container * @param containerV Vertical size of container - * @param itemList + * @param itemList Players inventory items * @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(containerH: number, containerV: number, itemList: IItem[], containerId: string): number[][]; + protected isVertical(itemLocation: IItemLocation): boolean; + protected getInventoryItemHash(inventoryItem: IItem[]): InventoryHelper.InventoryItemHash; /** * Return the inventory that needs to be modified (scav/pmc etc) * Changes made to result apply to character inventory @@ -217,7 +219,7 @@ export declare class InventoryHelper { * @param toItems Inventory of the destination * @param request Move request */ - moveItemToProfile(sourceItems: Item[], toItems: Item[], request: IInventoryMoveRequestData): void; + moveItemToProfile(sourceItems: IItem[], toItems: IItem[], request: IInventoryMoveRequestData): void; /** * Internal helper function to move item within the same profile_f. * @param pmcData profile to edit @@ -225,7 +227,7 @@ export declare class InventoryHelper { * @param moveRequest client move request * @returns True if move was successful */ - moveItemInternal(pmcData: IPmcData, inventoryItems: Item[], moveRequest: IInventoryMoveRequestData): { + moveItemInternal(pmcData: IPmcData, inventoryItems: IItem[], moveRequest: IInventoryMoveRequestData): { success: boolean; errorMessage?: string; }; @@ -234,11 +236,11 @@ export declare class InventoryHelper { * @param pmcData Player profile * @param itemBeingMoved item being moved */ - protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: Item): void; + protected updateFastPanelBinding(pmcData: IPmcData, itemBeingMoved: IItem): void; /** * Internal helper function to handle cartridges in inventory if any of them exist. */ - protected handleCartridges(items: Item[], request: IInventoryMoveRequestData): void; + protected handleCartridges(items: IItem[], request: IInventoryMoveRequestData): void; /** * Get details for how a random loot container should be handled, max rewards, possible reward tpls * @param itemTpl Container being opened @@ -254,12 +256,21 @@ export declare class InventoryHelper { * @param itemToCheck Item to look for * @returns True if item exists inside stash */ - isItemInStash(pmcData: IPmcData, itemToCheck: Item): boolean; + isItemInStash(pmcData: IPmcData, itemToCheck: IItem): boolean; + validateInventoryUsesMonogoIds(itemsToValidate: IItem[]): void; + /** + * Does the provided item have a root item with the provided id + * @param pmcData Profile with items + * @param item Item to check + * @param rootId Root item id to check for + * @returns True when item has rootId, false when not + */ + doesItemHaveRootId(pmcData: IPmcData, item: IItem, rootId: string): boolean; } declare namespace InventoryHelper { interface InventoryItemHash { - byItemId: Record; - byParentId: Record; + byItemId: Record; + byParentId: Record; } } export {}; diff --git a/TypeScript/9RouterHooks/types/helpers/ItemHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/ItemHelper.d.ts index 4afcda3..366ad9b 100644 --- a/TypeScript/9RouterHooks/types/helpers/ItemHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/ItemHelper.d.ts @@ -1,8 +1,8 @@ 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 { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IUpd, IUpdRepairable } 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"; @@ -42,7 +42,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns True if pool contains item */ - hasItemWithTpl(itemPool: Item[], item: ItemTpl, slotId?: string): boolean; + hasItemWithTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): boolean; /** * Get the first item from provided pool with the desired tpl * @param itemPool Item collection to search @@ -50,7 +50,7 @@ export declare class ItemHelper { * @param slotId OPTIONAL - slotid of desired item * @returns Item or undefined */ - getItemFromPoolByTpl(itemPool: Item[], item: ItemTpl, slotId?: string): Item | undefined; + getItemFromPoolByTpl(itemPool: IItem[], item: ItemTpl, slotId?: string): IItem | 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 @@ -59,7 +59,7 @@ export declare class ItemHelper { * @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; + isSameItems(item1: IItem[], item2: IItem[], compareUpdProperties?: Set): boolean; /** * This method will compare two items and see if the are equivalent. * This method will NOT compare IDs on the items @@ -68,13 +68,13 @@ export declare class ItemHelper { * @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; + isSameItem(item1: IItem, item2: IItem, 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; + generateUpdForItem(itemTemplate: ITemplateItem): IUpd; /** * Checks if a tpl is a valid item. Valid meaning that it's an item that be stored in stash * Valid means: @@ -171,7 +171,7 @@ export declare class ItemHelper { * @param item Item to update * @returns Fixed item */ - fixItemStackCount(item: Item): Item; + fixItemStackCount(item: IItem): IItem; /** * Get cloned copy of all item data from items.json * @returns array of ITemplateItem objects @@ -191,7 +191,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability Skip over armor items without durability * @returns % quality modifer between 0 and 1 */ - getItemQualityModifierForItems(items: Item[], skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifierForItems(items: IItem[], skipArmorItemsWithoutDurability?: boolean): number; /** * get normalized value (0-1) based on item condition * Will return -1 for base armor items with 0 durability @@ -199,7 +199,7 @@ export declare class ItemHelper { * @param skipArmorItemsWithoutDurability return -1 for armor items that have maxdurability of 0 * @returns Number between 0 and 1 */ - getItemQualityModifier(item: Item, skipArmorItemsWithoutDurability?: boolean): number; + getItemQualityModifier(item: IItem, 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 @@ -207,14 +207,14 @@ export declare class ItemHelper { * @param item Item quality value is for * @returns A number between 0 and 1 */ - protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: Repairable, item: Item): number; + protected getRepairableItemQualityValue(itemDetails: ITemplateItem, repairable: IUpdRepairable, item: IItem): number; /** * 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 baseItemId Parent items id * @returns an array of strings */ - findAndReturnChildrenByItems(items: Item[], baseItemId: string): string[]; + findAndReturnChildrenByItems(items: IItem[], baseItemId: string): string[]; /** * A variant of findAndReturnChildren where the output is list of item objects instead of their ids. * @param items Array of items (item + possible children) @@ -222,20 +222,20 @@ export declare class ItemHelper { * @param modsOnly Include only mod items, exclude items stored inside root item * @returns An array of Item objects */ - findAndReturnChildrenAsItems(items: Item[], baseItemId: string, modsOnly?: boolean): Item[]; + findAndReturnChildrenAsItems(items: IItem[], baseItemId: string, modsOnly?: boolean): IItem[]; /** * 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 * @param assort Array of items to check in * @returns Array of children of requested item */ - findAndReturnChildrenByAssort(itemIdToFind: string, assort: Item[]): Item[]; + findAndReturnChildrenByAssort(itemIdToFind: string, assort: IItem[]): IItem[]; /** * Check if the passed in item has buy count restrictions * @param itemToCheck Item to check * @returns true if it has buy restrictions */ - hasBuyRestrictions(itemToCheck: Item): boolean; + hasBuyRestrictions(itemToCheck: IItem): boolean; /** * is the passed in template id a dog tag * @param tpl Template id to check @@ -247,7 +247,7 @@ export declare class ItemHelper { * @param item * @returns "slotId OR slotid,locationX,locationY" */ - getChildId(item: Item): string; + getChildId(item: IItem): string; /** * Can the passed in item be stacked * @param tpl item to check @@ -259,21 +259,28 @@ export declare class ItemHelper { * @param itemToSplit Item to split into smaller stacks * @returns Array of root item + children */ - splitStack(itemToSplit: Item): Item[]; + splitStack(itemToSplit: IItem): IItem[]; /** * 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[][]; + splitStackIntoSeparateItems(itemToSplit: IItem): IItem[][]; /** * Find Barter items from array of items * @param {string} by tpl or id - * @param {Item[]} itemsToSearch Array of items to iterate over + * @param {IItem[]} itemsToSearch Array of items to iterate over * @param {string} desiredBarterItemIds * @returns Array of Item objects */ - findBarterItems(by: "tpl" | "id", itemsToSearch: Item[], desiredBarterItemIds: string | string[]): Item[]; + findBarterItems(by: "tpl" | "id", itemsToSearch: IItem[], desiredBarterItemIds: string | string[]): IItem[]; + /** + * Replace the _id value for base item + all children that are children of it + * REPARENTS ROOT ITEM ID, NOTHING ELSE + * @param itemWithChildren Item with mods to update + * @param newId new id to add on chidren of base item + */ + replaceRootItemID(itemWithChildren: IItem[], newId?: string): void; /** * 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. @@ -284,13 +291,13 @@ export declare class ItemHelper { * @param fastPanel Quick slot panel * @returns Item[] */ - replaceIDs(originalItems: Item[], pmcData?: IPmcData, insuredItems?: InsuredItem[], fastPanel?: any): Item[]; + replaceIDs(originalItems: IItem[], pmcData?: IPmcData, insuredItems?: IInsuredItem[], fastPanel?: any): IItem[]; /** * 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; + setFoundInRaid(items: IItem[]): 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 @@ -315,7 +322,7 @@ export declare class ItemHelper { * @param parent The parent of the item to be checked * @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 | undefined; + isRaidModdable(item: IItem, parent: IItem): boolean | undefined; /** * Retrieves the main parent item for a given attachment item. * @@ -332,14 +339,14 @@ export declare class ItemHelper { * @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 `undefined` if no such parent exists. */ - getAttachmentMainParent(itemId: string, itemsMap: Map): Item | undefined; + getAttachmentMainParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Determines if an item is an attachment that is currently attached to it's parent item. * * @param item The item to check. * @returns true if the item is attached attachment, otherwise false. */ - isAttachmentAttached(item: Item): boolean; + isAttachmentAttached(item: IItem): boolean; /** * Retrieves the equipment parent item for a given item. * @@ -355,14 +362,14 @@ export declare class ItemHelper { * @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; + getEquipmentParent(itemId: string, itemsMap: Map): IItem | undefined; /** * Get the inventory size of an item * @param items Item with children * @param rootItemId * @returns ItemSize object (width and height) */ - getItemSize(items: Item[], rootItemId: string): ItemHelper.ItemSize; + getItemSize(items: IItem[], rootItemId: string): ItemHelper.IItemSize; /** * Get a random cartridge from an items Filter property * @param item Db item template to look up Cartridge filter values from @@ -374,21 +381,21 @@ export declare class ItemHelper { * @param ammoBox Box to add cartridges to * @param ammoBoxDetails Item template from items db */ - addCartridgesToAmmoBox(ammoBox: Item[], ammoBoxDetails: ITemplateItem): void; + addCartridgesToAmmoBox(ammoBox: IItem[], 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; + addSingleStackCartridgesToAmmoBox(ammoBox: IItem[], ammoBoxDetails: ITemplateItem): void; /** * Check if item is stored inside of a container - * @param item Item to check is inside of container + * @param itemToCheck Item to check is inside of container * @param desiredContainerSlotId Name of slot to check item is in e.g. SecuredContainer/Backpack * @param items Inventory with child parent items to check * @returns True when item is in container */ - itemIsInsideContainer(item: Item, desiredContainerSlotId: string, items: Item[]): boolean; + itemIsInsideContainer(itemToCheck: IItem, desiredContainerSlotId: string, items: IItem[]): boolean; /** * Add child items (cartridges) to a magazine * @param magazine Magazine to add child items to @@ -399,15 +406,15 @@ export declare class ItemHelper { * @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, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; + fillMagazineWithRandomCartridge(magazine: IItem[], magTemplate: ITemplateItem, staticAmmoDist: Record, caliber?: string, minSizePercent?: number, defaultCartridgeTpl?: string, weapon?: ITemplateItem): void; /** * Add child items to a magazine of a specific cartridge * @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 + * @param minSizeMultiplier % the magazine must be filled to */ - fillMagazineWithCartridge(magazineWithChildCartridges: Item[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizePercent?: number): void; + fillMagazineWithCartridge(magazineWithChildCartridges: IItem[], magTemplate: ITemplateItem, cartridgeTpl: string, minSizeMultiplier?: number): void; /** * Choose a random bullet type from the list of possible a magazine has * @param magTemplate Magazine template from Db @@ -432,13 +439,13 @@ export declare class ItemHelper { * @param foundInRaid OPTIONAL - Are cartridges found in raid (SpawnedInSession) * @returns Item */ - createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): Item; + createCartridges(parentId: string, ammoTpl: string, stackCount: number, location: number, foundInRaid?: boolean): IItem; /** * Get the size of a stack, return 1 if no stack object count property found * @param item Item to get stack size of * @returns size of stack */ - getItemStackSize(item: Item): number; + getItemStackSize(item: IItem): number; /** * Get the name of an item from the locale file using the item tpl * @param itemTpl Tpl of item to get name of @@ -459,7 +466,7 @@ export declare class ItemHelper { * @param requiredOnly Only add required mods * @returns Item with children */ - addChildSlotItems(itemToAdd: Item[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): Item[]; + addChildSlotItems(itemToAdd: IItem[], itemToAddTemplate: ITemplateItem, modSpawnChanceDict?: Record, requiredOnly?: boolean): IItem[]; /** * 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 @@ -484,14 +491,14 @@ export declare class ItemHelper { * @param itemWithChildren Primary item + children of primary item * @returns Item array with updated IDs */ - reparentItemAndChildren(rootItem: Item, itemWithChildren: Item[]): Item[]; + reparentItemAndChildren(rootItem: IItem, itemWithChildren: IItem[]): IItem[]; /** * 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; + remapRootItemId(itemWithChildren: IItem[], 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 @@ -501,24 +508,37 @@ export declare class ItemHelper { * @param items Array of Items that should be adjusted. * @returns Array of Items that have been adopted. */ - adoptOrphanedItems(rootId: string, items: Item[]): Item[]; + adoptOrphanedItems(rootId: string, items: IItem[]): IItem[]; /** * 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; + generateItemsMap(items: IItem[]): 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; + addUpdObjectToItem(item: IItem, warningMessageWhenMissing?: string): boolean; + /** + * Return all tpls from Money enum + * @returns string tpls + */ + getMoneyTpls(): string[]; + /** + * Get a randomsied stack size for the passed in ammo + * @param ammoItemTemplate Ammo to get stack size for + * @param maxLimit default: Limit to 60 to prevent crazy values when players use stack increase mods + * @returns number + */ + getRandomisedAmmoStackSize(ammoItemTemplate: ITemplateItem, maxLimit?: number): number; + getItemBaseType(tpl: string, rootOnly?: boolean): string; } declare namespace ItemHelper { - interface ItemSize { + interface IItemSize { width: number; height: number; } diff --git a/TypeScript/9RouterHooks/types/helpers/PresetHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/PresetHelper.d.ts index f16d6ce..62fda36 100644 --- a/TypeScript/9RouterHooks/types/helpers/PresetHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/PresetHelper.d.ts @@ -40,9 +40,9 @@ export declare class PresetHelper { getAllPresets(): IPreset[]; getPresets(templateId: string): IPreset[]; /** - * 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 + * Get a cloned default preset for passed in item tpl + * @param templateId Item tpl to get preset for + * @returns undefined if no default preset, otherwise IPreset */ getDefaultPreset(templateId: string): IPreset | undefined; getBaseItemTpl(presetId: string): string; diff --git a/TypeScript/9RouterHooks/types/helpers/ProfileHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/ProfileHelper.d.ts index 45a73cd..df468fe 100644 --- a/TypeScript/9RouterHooks/types/helpers/ProfileHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/ProfileHelper.d.ts @@ -1,6 +1,6 @@ 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 { Common, ICounterKeyValue, IStats } from "@spt/models/eft/common/tables/IBotBase"; import { ISptProfile } from "@spt/models/eft/profile/ISptProfile"; import { IValidateNicknameRequestData } from "@spt/models/eft/profile/IValidateNicknameRequestData"; import { BonusType } from "@spt/models/enums/BonusType"; @@ -59,7 +59,12 @@ export declare class ProfileHelper { * @param scavProfile post-raid scav profile * @returns Updated profile array */ - protected postRaidXpWorkaroundFix(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, output: IPmcData[]): IPmcData[]; + protected postRaidXpWorkaroundFix(sessionId: string, clonedPmc: IPmcData, clonedScav: IPmcData, output: IPmcData[]): IPmcData[]; + /** + * Sanitize any information from the profile that the client does not expect to receive + * @param clonedProfile A clone of the full player profile + */ + protected sanitizeProfileForClient(clonedProfile: ISptProfile): void; /** * Check if a nickname is used by another profile loaded by the server * @param nicknameRequest nickname request object @@ -121,7 +126,7 @@ export declare class ProfileHelper { * Get baseline counter values for a fresh profile * @returns Default profile Stats object */ - getDefaultCounters(): Stats; + getDefaultCounters(): IStats; /** * is this profile flagged for data removal * @param sessionID Profile id @@ -155,7 +160,7 @@ export declare class ProfileHelper { * @param counters Counters to search for key * @param keyToIncrement Key */ - incrementStatCounter(counters: CounterKeyValue[], keyToIncrement: string): void; + incrementStatCounter(counters: ICounterKeyValue[], keyToIncrement: string): void; /** * Check if player has a skill at elite level * @param skillType Skill to check @@ -206,4 +211,10 @@ export declare class ProfileHelper { */ addAchievementToProfile(pmcProfile: IPmcData, achievementId: string): void; hasAccessToRepeatableFreeRefreshSystem(pmcProfile: IPmcData): boolean; + /** + * Find a profiles "Pockets" item and replace its tpl with passed in value + * @param pmcProfile Player profile + * @param newPocketTpl New tpl to set profiles Pockets to + */ + replaceProfilePocketTpl(pmcProfile: IPmcData, newPocketTpl: string): void; } diff --git a/TypeScript/9RouterHooks/types/helpers/QuestHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/QuestHelper.d.ts index 2d5730d..02fc439 100644 --- a/TypeScript/9RouterHooks/types/helpers/QuestHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/QuestHelper.d.ts @@ -8,7 +8,7 @@ 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 { IItem } 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"; @@ -102,20 +102,20 @@ export declare class QuestHelper { * @param questReward Reward item to fix * @returns Fixed rewards */ - protected processReward(questReward: IQuestReward): Item[]; + protected processReward(questReward: IQuestReward): IItem[]; /** * 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; + protected generateArmorRewardChildSlots(originalRewardRootItem: IItem, 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): Item[]; + getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[]; /** * Look up quest in db by accepted quest id and construct a profile-ready object ready to store in profile * @param pmcData Player profile @@ -142,6 +142,22 @@ export declare class QuestHelper { * @param questId QuestId to check */ questIsForOtherSide(playerSide: string, questId: string): boolean; + /** + * Is the provided quest prevented from being viewed by the provided game version + * (Inclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should not be visible to game version + */ + protected questIsProfileBlacklisted(gameVersion: string, questId: string): boolean; + /** + * Is the provided quest able to be seen by the provided game version + * (Exclusive filter) + * @param gameVersion Game version to check against + * @param questId Quest id to check + * @returns True Quest should be visible to game version + */ + protected questIsProfileWhitelisted(gameVersion: 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 @@ -152,7 +168,7 @@ export declare class QuestHelper { /** * Adjust quest money rewards by passed in multiplier * @param quest Quest to multiple money rewards - * @param bonusPercent Value to adjust money rewards by + * @param bonusPercent Pecent to adjust money rewards by * @param questStatus Status of quest to apply money boost to rewards of * @returns Updated quest */ @@ -173,7 +189,7 @@ export declare class QuestHelper { * @param sessionId Session id * @param item Item that was adjusted */ - protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: Item): void; + protected addItemStackSizeChangeIntoEventResponse(output: IItemEventRouterResponse, sessionId: string, item: IItem): void; /** * Get quests, strip all requirement conditions except level * @param quests quests to process @@ -243,7 +259,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): Item[]; + applyQuestReward(profileData: IPmcData, questId: string, state: QuestStatus, sessionId: string, questResponse: IItemEventRouterResponse): IItem[]; /** * WIP - Find hideout craft id and add to unlockedProductionRecipe array in player profile * also update client response recipeUnlocked array with craft id @@ -259,7 +275,7 @@ export declare class QuestHelper { * @param pmcData player profile * @returns bonus as a percent */ - protected getQuestMoneyRewardBonus(pmcData: IPmcData): number; + protected getQuestMoneyRewardBonusMultiplier(pmcData: IPmcData): number; /** * Find quest with 'findItem' condition that needs the item tpl be handed in * @param itemTpl item tpl to look for diff --git a/TypeScript/9RouterHooks/types/helpers/RagfairHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/RagfairHelper.d.ts index 52ca467..0ec76d6 100644 --- a/TypeScript/9RouterHooks/types/helpers/RagfairHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/RagfairHelper.d.ts @@ -2,7 +2,7 @@ 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 { IItem } 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"; @@ -36,7 +36,7 @@ export declare class RagfairHelper { * Iterate over array of identical items and merge stack count * Ragfair allows abnormally large stacks. */ - mergeStackable(items: Item[]): Item[]; + mergeStackable(items: IItem[]): IItem[]; /** * Return the symbol for a currency * e.g. 5449016a4bdc2d6f028b456f return ₽ diff --git a/TypeScript/9RouterHooks/types/helpers/RagfairOfferHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/RagfairOfferHelper.d.ts index 2386316..f5a2193 100644 --- a/TypeScript/9RouterHooks/types/helpers/RagfairOfferHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/RagfairOfferHelper.d.ts @@ -9,14 +9,14 @@ 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 { IItem } 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 { IRagfairConfig, ITieredFlea } 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"; @@ -65,6 +65,7 @@ export declare class RagfairOfferHelper { * @returns Offers the player should see */ getValidOffers(searchRequest: ISearchRequestData, itemsToAdd: string[], traderAssorts: Record, pmcData: IPmcData): IRagfairOffer[]; + protected offerIsHiddenFromPlayerTieredFlea(tieredFlea: ITieredFlea, offer: IRagfairOffer, tieredFleaLimitTypes: string[], playerLevel: number): boolean; /** * 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 @@ -125,7 +126,7 @@ export declare class RagfairOfferHelper { * @param itemsInInventoryToList items to sum up * @returns Total count */ - getTotalStackCountSize(itemsInInventoryToList: Item[][]): number; + getTotalStackCountSize(itemsInInventoryToList: IItem[][]): number; /** * Add amount to players ragfair rating * @param sessionId Profile to update @@ -173,7 +174,7 @@ export declare class RagfairOfferHelper { * @param offer The flea offer * @returns True if the given item is functional */ - isItemFunctional(offerRootItem: Item, offer: IRagfairOffer): boolean; + isItemFunctional(offerRootItem: IItem, offer: IRagfairOffer): boolean; /** * Should a ragfair offer be visible to the player * @param searchRequest Search request @@ -190,7 +191,7 @@ export declare class RagfairOfferHelper { * @param item Item to check * @returns True if has condition */ - protected isConditionItem(item: Item): boolean; + protected isConditionItem(item: IItem): boolean; /** * Is items quality value within desired range * @param item Item to check quality of @@ -198,5 +199,5 @@ export declare class RagfairOfferHelper { * @param max Desired maximum quality * @returns True if in range */ - protected itemQualityInRange(item: Item, min: number, max: number): boolean; + protected itemQualityInRange(item: IItem, min: number, max: number): boolean; } diff --git a/TypeScript/9RouterHooks/types/helpers/RagfairSellHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/RagfairSellHelper.d.ts index fc9e4b5..232ec51 100644 --- a/TypeScript/9RouterHooks/types/helpers/RagfairSellHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/RagfairSellHelper.d.ts @@ -1,4 +1,4 @@ -import { SellResult } from "@spt/models/eft/ragfair/IRagfairOffer"; +import { ISellResult } 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"; @@ -28,5 +28,5 @@ export declare class RagfairSellHelper { * @param sellInOneGo All items listed get sold at once * @returns Array of purchases of item(s) listed */ - rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): SellResult[]; + rollForSale(sellChancePercent: number, itemSellCount: number, sellInOneGo?: boolean): ISellResult[]; } diff --git a/TypeScript/9RouterHooks/types/helpers/RagfairServerHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/RagfairServerHelper.d.ts index 3e1fea9..c7c72a0 100644 --- a/TypeScript/9RouterHooks/types/helpers/RagfairServerHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/RagfairServerHelper.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -65,7 +65,7 @@ export declare class RagfairServerHelper { * @param sessionID Player to send items to * @param returnedItems Items to send to player */ - returnItems(sessionID: string, returnedItems: Item[]): void; + returnItems(sessionID: string, returnedItems: IItem[]): void; calculateDynamicStackCount(tplId: string, isWeaponPreset: boolean): number; /** * Choose a currency at random with bias @@ -77,11 +77,11 @@ export declare class RagfairServerHelper { * @param item Preset item * @returns Array of weapon and its children */ - getPresetItems(item: Item): Item[]; + getPresetItems(item: IItem): IItem[]; /** * Possible bug, returns all items associated with an items tpl, could be multiple presets from globals.json * @param item Preset item * @returns */ - getPresetItemsByTpl(item: Item): Item[]; + getPresetItemsByTpl(item: IItem): IItem[]; } diff --git a/TypeScript/9RouterHooks/types/helpers/RepairHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/RepairHelper.d.ts index 63c78c9..538347e 100644 --- a/TypeScript/9RouterHooks/types/helpers/RepairHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/RepairHelper.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -24,7 +24,7 @@ export declare class RepairHelper { * @param traderQualityMultipler Trader quality value from traders base json * @param applyMaxDurabilityDegradation should item have max durability reduced */ - updateItemDurability(itemToRepair: Item, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; + updateItemDurability(itemToRepair: IItem, itemToRepairDetails: ITemplateItem, isArmor: boolean, amountToRepair: number, useRepairKit: boolean, traderQualityMultipler: number, applyMaxDurabilityDegradation?: boolean): void; /** * Repairing armor reduces the total durability value slightly, get a randomised (to 2dp) amount based on armor material * @param armorMaterial What material is the armor being repaired made of diff --git a/TypeScript/9RouterHooks/types/helpers/SecureContainerHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/SecureContainerHelper.d.ts index b6bcffe..7684486 100644 --- a/TypeScript/9RouterHooks/types/helpers/SecureContainerHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/SecureContainerHelper.d.ts @@ -1,8 +1,8 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; -export interface OwnerInventoryItems { - from: Item[]; - to: Item[]; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +export interface IOwnerInventoryItems { + from: IItem[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } @@ -14,5 +14,5 @@ export declare class SecureContainerHelper { * @param items Inventory items to look for secure container in * @returns Array of ids */ - getSecureContainerItems(items: Item[]): string[]; + getSecureContainerItems(items: IItem[]): string[]; } diff --git a/TypeScript/9RouterHooks/types/helpers/TradeHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/TradeHelper.d.ts index 6e6f3a2..c7e1e14 100644 --- a/TypeScript/9RouterHooks/types/helpers/TradeHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/TradeHelper.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -13,6 +13,7 @@ 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 { FenceService } from "@spt/services/FenceService"; import { LocalisationService } from "@spt/services/LocalisationService"; import { PaymentService } from "@spt/services/PaymentService"; @@ -21,6 +22,7 @@ import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class TradeHelper { protected logger: ILogger; + protected databaseService: DatabaseService; protected eventOutputHolder: EventOutputHolder; protected traderHelper: TraderHelper; protected itemHelper: ItemHelper; @@ -36,7 +38,7 @@ export declare class TradeHelper { protected cloner: ICloner; protected traderConfig: ITraderConfig; 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); + constructor(logger: ILogger, databaseService: DatabaseService, 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 @@ -56,6 +58,7 @@ export declare class TradeHelper { * @param output IItemEventRouterResponse */ sellItem(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData, sessionID: string, output: IItemEventRouterResponse): void; + protected incrementCirculateSoldToTraderCounter(profileWithItemsToSell: IPmcData, profileToReceiveMoney: IPmcData, sellRequest: IProcessSellTradeRequestData): void; /** * Traders allow a limited number of purchases per refresh cycle (default 60 mins) * @param sessionId Session id @@ -65,5 +68,5 @@ export declare class TradeHelper { * @param assortId Id of assort being purchased * @param count How many of the item are being bought */ - protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: Item, assortId: string, count: number): void; + protected checkPurchaseIsWithinTraderItemLimit(sessionId: string, pmcData: IPmcData, traderId: string, assortBeingPurchased: IItem, assortId: string, count: number): void; } diff --git a/TypeScript/9RouterHooks/types/helpers/TraderAssortHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/TraderAssortHelper.d.ts index f1ecd3b..a50b589 100644 --- a/TypeScript/9RouterHooks/types/helpers/TraderAssortHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/TraderAssortHelper.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -58,7 +58,7 @@ export declare class TraderAssortHelper { * Reset every traders root item `BuyRestrictionCurrent` property to 0 * @param assortItems Items to adjust */ - protected resetBuyRestrictionCurrentValue(assortItems: Item[]): void; + protected resetBuyRestrictionCurrentValue(assortItems: IItem[]): 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 */ @@ -85,7 +85,7 @@ export declare class TraderAssortHelper { * @param traderId trader id * @returns array of Items */ - protected getPristineTraderAssorts(traderId: string): Item[]; + protected getPristineTraderAssorts(traderId: string): IItem[]; /** * Returns generated ragfair offers in a trader assort format * @returns Trader assort object diff --git a/TypeScript/9RouterHooks/types/helpers/TraderHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/TraderHelper.d.ts index 52c0d9b..0cce160 100644 --- a/TypeScript/9RouterHooks/types/helpers/TraderHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/TraderHelper.d.ts @@ -2,9 +2,9 @@ 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 { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IProfileTraderTemplate } from "@spt/models/eft/common/tables/IProfileTemplate"; +import { ITraderAssort, ITraderBase, ITraderLoyaltyLevel } 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"; @@ -52,7 +52,7 @@ export declare class TraderHelper { * @param assortId Id of assort to find * @returns Item object */ - getTraderAssortItemByAssortId(traderId: string, assortId: string): Item | undefined; + getTraderAssortItemByAssortId(traderId: string, assortId: string): IItem | 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 @@ -66,7 +66,7 @@ export declare class TraderHelper { * @param rawProfileTemplate Raw profile from profiles.json to look up standing from * @returns Standing value */ - protected getStartingStanding(traderId: string, rawProfileTemplate: ProfileTraderTemplate): number; + protected getStartingStanding(traderId: string, rawProfileTemplate: IProfileTraderTemplate): number; /** * Add an array of suit ids to a profiles suit array, no duplicates * @param fullProfile Profile to add to @@ -118,7 +118,7 @@ export declare class TraderHelper { * @returns Time in seconds */ getTraderUpdateSeconds(traderId: string): number | undefined; - getLoyaltyLevel(traderID: string, pmcData: IPmcData): LoyaltyLevel; + getLoyaltyLevel(traderID: string, pmcData: IPmcData): ITraderLoyaltyLevel; /** * Store the purchase of an assort from a trader in the player profile * @param sessionID Session id @@ -130,7 +130,7 @@ export declare class TraderHelper { count: number; }[]; traderId: string; - }, itemPurchased: Item): void; + }, itemPurchased: IItem): void; /** * EoD and Unheard get a 20% bonus to personal trader limit purchases * @param buyRestrictionMax Existing value from trader item diff --git a/TypeScript/9RouterHooks/types/helpers/WeightedRandomHelper.d.ts b/TypeScript/9RouterHooks/types/helpers/WeightedRandomHelper.d.ts index f3a34f3..e6e2041 100644 --- a/TypeScript/9RouterHooks/types/helpers/WeightedRandomHelper.d.ts +++ b/TypeScript/9RouterHooks/types/helpers/WeightedRandomHelper.d.ts @@ -1,13 +1,4 @@ export declare class WeightedRandomHelper { - /** - * @deprecated USE getWeightedValue() WHERE POSSIBLE - * Gets a tplId from a weighted dictionary - * @param {tplId: weighting[]} itemArray - * @returns tplId - */ - getWeightedInventoryItem(itemArray: { - [tplId: string]: unknown; - } | ArrayLike): string; /** * Choos an item from the passed in array based on the weightings of each * @param itemArray Items and weights to use diff --git a/TypeScript/9RouterHooks/types/loaders/BundleLoader.d.ts b/TypeScript/9RouterHooks/types/loaders/BundleLoader.d.ts index 8c0ed4d..fcbf97d 100644 --- a/TypeScript/9RouterHooks/types/loaders/BundleLoader.d.ts +++ b/TypeScript/9RouterHooks/types/loaders/BundleLoader.d.ts @@ -8,7 +8,7 @@ export declare class BundleInfo { filename: string; crc: number; dependencies: string[]; - constructor(modpath: string, bundle: BundleManifestEntry, bundleHash: number); + constructor(modpath: string, bundle: IBundleManifestEntry, bundleHash: number); } export declare class BundleLoader { protected httpServerHelper: HttpServerHelper; @@ -26,10 +26,10 @@ export declare class BundleLoader { addBundles(modpath: string): void; addBundle(key: string, b: BundleInfo): void; } -export interface BundleManifest { - manifest: BundleManifestEntry[]; +export interface IBundleManifest { + manifest: IBundleManifestEntry[]; } -export interface BundleManifestEntry { +export interface IBundleManifestEntry { key: string; dependencyKeys: string[]; } diff --git a/TypeScript/9RouterHooks/types/models/eft/bot/IGenerateBotsRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/bot/IGenerateBotsRequestData.d.ts index f1f7013..f0f7168 100644 --- a/TypeScript/9RouterHooks/types/models/eft/bot/IGenerateBotsRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/bot/IGenerateBotsRequestData.d.ts @@ -1,7 +1,7 @@ export interface IGenerateBotsRequestData { - conditions: Condition[]; + conditions: ICondition[]; } -export interface Condition { +export interface ICondition { /** e.g. assault/pmcBot/bossKilla */ Role: string; Limit: number; diff --git a/TypeScript/9RouterHooks/types/models/eft/common/IGlobals.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/IGlobals.d.ts index bfcb920..f23b608 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/IGlobals.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/IGlobals.d.ts @@ -1,5 +1,5 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGlobals { time: number; config: IConfig; @@ -9,7 +9,80 @@ export interface IGlobals { BotWeaponScatterings: IBotWeaponScattering[]; ItemPresets: Record; } +export interface IArtilleryShelling { + ArtilleryMapsConfigs: Record; + ProjectileExplosionParams: IProjectileExplosionParams; + MaxCalledShellingCount: number; +} +export interface IArtilleryMapSettings { + PlanedShellingOn: boolean; + InitShellingTimer: number; + BeforeShellingSignalTime: number; + ShellingCount: number; + ZonesInShelling: number; + NewZonesForEachShelling: boolean; + InitCalledShellingTime: number; + ShellingZones: IShellingZone[]; + Brigades: IBrigade[]; + ArtilleryShellingAirDropSettings: IArtilleryShellingAirDropSettings; + PauseBetweenShellings: Ixyz; +} +export interface IShellingZone { + ID: number; + PointsInShellings: Ixyz; + ShellingRounds: number; + ShotCount: number; + PauseBetweenRounds: Ixyz; + PauseBetweenShots: Ixyz; + Center: Ixyz; + Rotate: number; + GridStep: Ixyz; + Points: Ixyz; + PointRadius: number; + ExplosionDistanceRange: Ixyz; + AlarmStages: IAlarmStage[]; + BeforeShellingSignalTime: number; + UsedInPlanedShelling: boolean; + UseInCalledShelling: boolean; + IsActive: boolean; +} +export interface IAlarmStage { + Value: { + x: number; + y: number; + }; +} +export interface IBrigade { + ID: number; + ArtilleryGuns: IArtilleryGun[]; +} +export interface IArtilleryGun { + Position: Ixyz; +} +export interface IArtilleryShellingAirDropSettings { + UseAirDrop: boolean; + AirDropTime: number; + AirDropPosition: Ixyz; + LootTemplateId: string; +} +export interface IProjectileExplosionParams { + Blindness: Ixyz; + Contusion: Ixyz; + ArmorDistanceDistanceDamage: Ixyz; + MinExplosionDistance: number; + MaxExplosionDistance: number; + FragmentsCount: number; + Strength: number; + ArmorDamage: number; + StaminaBurnRate: number; + PenetrationPower: number; + DirectionalDamageAngle: number; + DirectionalDamageMultiplier: number; + FragmentType: string; + DeadlyDistance: number; +} export interface IConfig { + ArtilleryShelling: IArtilleryShelling; content: IContent; AimPunchMagnitude: number; WeaponSkillProgressRate: number; @@ -29,8 +102,12 @@ export interface IConfig { Mastering: IMastering[]; GlobalItemPriceModifier: number; TradingUnlimitedItems: boolean; + TransitSettings: ITransitSettings; + TripwiresSettings: ITripwiresSettings; MaxLoyaltyLevelForAll: boolean; + MountingSettings: IMountingSettings; GlobalLootChanceModifier: number; + GlobalLootChanceModifierPvE: number; GraphicSettings: IGraphicSettings; TimeBeforeDeploy: number; TimeBeforeDeployLocal: number; @@ -47,8 +124,10 @@ export interface IConfig { UncheckOnShot: boolean; BotsEnabled: boolean; BufferZone: IBufferZone; + Airdrop: IAirdropGlobalSettings; ArmorMaterials: IArmorMaterials; ArenaEftTransferSettings: IArenaEftTransferSettings; + KarmaCalculationSettings: IKarmaCalculationSettings; LegsOverdamage: number; HandsOverdamage: number; StomachOverdamage: number; @@ -173,6 +252,80 @@ export interface IEventWeather { Wind: number; WindDirection: number; } +export interface ITransitSettings { + BearPriceMod: number; + ClearAllPlayerEffectsOnTransit: boolean; + CoefficientDiscountCharisma: number; + DeliveryMinPrice: number; + DeliveryPrice: number; + ModDeliveryCost: number; + PercentageOfMissingEnergyRestore: number; + PercentageOfMissingHealthRestore: number; + PercentageOfMissingWaterRestore: number; + ScavPriceMod: number; + UsecPriceMod: number; + active: boolean; +} +export interface ITripwiresSettings { + CollisionCapsuleCheckCoef: number; + CollisionCapsuleRadius: number; + DefuseTimeSeconds: number; + DestroyedSeconds: number; + GroundDotProductTolerance: number; + InertSeconds: number; + InteractionSqrDistance: number; + MaxHeightDifference: number; + MaxLength: number; + MaxPreviewLength: number; + MaxTripwireToPlayerDistance: number; + MinLength: number; + MultitoolDefuseTimeSeconds: number; + ShotSqrDistance: number; +} +export interface IMountingSettings { + MovementSettings: IMountingMovementSettings; + PointDetectionSettings: IMountingPointDetectionSettings; +} +export interface IMountingMovementSettings { + ApproachTime: number; + ApproachTimeDeltaAngleModifier: number; + ExitTime: number; + MaxApproachTime: number; + MaxPitchLimitExcess: number; + MaxVerticalMountAngle: number; + MaxYawLimitExcess: number; + MinApproachTime: number; + MountingCameraSpeed: number; + MountingSwayFactorModifier: number; + PitchLimitHorizontal: Ixyz; + PitchLimitHorizontalBipod: Ixyz; + PitchLimitVertical: Ixyz; + RotationSpeedClamp: number; + SensitivityMultiplier: number; +} +export interface IMountingPointDetectionSettings { + CheckHorizontalSecondaryOffset: number; + CheckWallOffset: number; + EdgeDetectionDistance: number; + GridMaxHeight: number; + GridMinHeight: number; + HorizontalGridFromTopOffset: number; + HorizontalGridSize: number; + HorizontalGridStepsAmount: number; + MaxFramesForRaycast: number; + MaxHorizontalMountAngleDotDelta: number; + MaxProneMountAngleDotDelta: number; + MaxVerticalMountAngleDotDelta: number; + PointHorizontalMountOffset: number; + PointVerticalMountOffset: number; + RaycastDistance: number; + SecondCheckVerticalDistance: number; + SecondCheckVerticalGridOffset: number; + SecondCheckVerticalGridSize: number; + SecondCheckVerticalGridSizeStepsAmount: number; + VerticalGridSize: number; + VerticalGridStepsAmount: number; +} export interface IGraphicSettings { ExperimentalFogInCity: boolean; } @@ -229,6 +382,8 @@ export interface IMatchEnd { survivedMult: number; runnerMult: number; killedMult: number; + transit_exp_reward: number; + transit_mult: number[][]; } export interface IKill { combo: ICombo[]; @@ -392,10 +547,30 @@ export interface IBodyParts { Feet: string; Hands: string; } -export interface IArenaEftTransferSettings { - ArenaEftTransferSettings: ArenaEftTransferSettings; +export interface IAirdropGlobalSettings { + ParachuteEndOpenHeight: number; + ParachuteStartOpenHeight: number; + PlaneAdditionalDistance: number; + PlaneAirdropDuration: number; + PlaneAirdropFlareWait: number; + PlaneAirdropSmoke: number; + PlaneMaxFlightHeight: number; + PlaneMinFlightHeight: number; + PlaneSpeed: number; + SmokeActivateHeight: number; } -export interface ArenaEftTransferSettings { +export interface IKarmaCalculationSettings { + defaultPveKarmaValue: number; + enable: boolean; + expireDaysAfterLastRaid: number; + maxKarmaThresholdPercentile: number; + minKarmaThresholdPercentile: number; + minSurvivedRaidCount: number; +} +export interface IArenaEftTransferSettings { + ArenaEftTransferSettings: IArenaEftTransferSettings; +} +export interface IArenaEftTransferSettings { ArenaManagerReputationTaxMultiplier: number; CharismaTaxMultiplier: number; CreditPriceTaxMultiplier: number; @@ -805,6 +980,7 @@ export interface IRagFair { balancerAveragePriceCoefficient: number; delaySinceOfferAdd: number; uniqueBuyerTimeoutInDays: number; + userRatingChangeFrequencyMultiplayer: number; ratingSumForIncrease: number; ratingIncreaseCount: number; ratingSumForDecrease: number; @@ -813,6 +989,7 @@ export interface IRagFair { maxSumForDecreaseRatingPerOneSale: number; maxSumForRarity: IMaxSumForRarity; ChangePriceCoef: number; + ItemRestrictions: IItemGlobalRestrictions[]; balancerUserItemSaleCooldownEnabled: boolean; balancerUserItemSaleCooldown: number; youSellOfferMaxStorageTimeInHour: number; @@ -820,11 +997,15 @@ export interface IRagFair { isOnlyFoundInRaidAllowed: boolean; sellInOnePiece: number; } +export interface IItemGlobalRestrictions { + MaxFlea: number; + MaxFleaStacked: number; + TemplateId: string; +} export interface IMaxActiveOfferCount { from: number; to: number; count: number; - countForSpecialEditions: number; } export interface IMaxSumForRarity { Common: IRarityMaxSum; @@ -842,7 +1023,10 @@ export interface IStamina { Capacity: number; SprintDrainRate: number; BaseRestorationRate: number; + BipodAimDrainRateMultiplier: number; JumpConsumption: number; + MountingHorizontalAimDrainRateMultiplier: number; + MountingVerticalAimDrainRateMultiplier: number; GrenadeHighThrow: number; GrenadeLowThrow: number; AimDrainRate: number; @@ -913,8 +1097,9 @@ export interface IAlpinist { RequirementTip: string; } export interface IRestrictionsInRaid { + MaxInLobby: number; + MaxInRaid: number; TemplateId: string; - Value: number; } export interface IFavoriteItemsSettings { WeaponStandMaxItemsCount: number; @@ -1013,6 +1198,7 @@ export interface ISquadSettings { SendRequestDelaySeconds: number; } export interface IInsurance { + ChangeForReturnItemsInOfflineRaid: number; MaxStorageTimeInHour: number; CoefOfSendingMessageTime: number; CoefOfHavingMarkOfUnknown: number; @@ -1028,6 +1214,7 @@ export interface ISkillsSettings { HideoutManagement: IHideoutManagement; Crafting: ICrafting; Metabolism: IMetabolism; + MountingErgonomicsBonusPerLevel: number; Immunity: Immunity; Endurance: IEndurance; Strength: IStrength; @@ -1053,6 +1240,7 @@ export interface ISkillsSettings { BearAksystems: any[]; BearHeavycaliber: any[]; BearRawpower: any[]; + BipodErgonomicsBonusPerLevel: number; UsecArsystems: any[]; UsecDeepweaponmodding_Settings: any[]; UsecLongrangeoptics_Settings: any[]; @@ -1112,6 +1300,7 @@ export interface IArmorCounters { export interface IHideoutManagement { SkillPointsPerAreaUpgrade: number; SkillPointsPerCraft: number; + CircleOfCultistsBonusPercent: number; ConsumptionReductionPerLevel: number; SkillBoostPercent: number; SkillPointsRate: ISkillPointsRate; @@ -1417,6 +1606,7 @@ export interface IFenceLevel { PaidExitCostModifier: number; BotFollowChance: number; ScavEquipmentSpawnChanceModifier: number; + TransitGridSize: Ixyz; PriceModifier: number; HostileBosses: boolean; HostileScavs: boolean; @@ -1435,6 +1625,7 @@ export interface IFenceLevel { ReactOnMarkOnUnknownsPVE: boolean; DeliveryGridSize: Ixyz; CanInteractWithBtr: boolean; + CircleOfCultistsBonusPercent: number; } export interface IInertia { InertiaLimits: Ixyz; @@ -1550,7 +1741,7 @@ export interface IPreset { _changeWeaponName: boolean; _name: string; _parent: string; - _items: Item[]; + _items: IItem[]; /** Default presets have this property */ _encyclopedia?: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/ILocation.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/ILocation.d.ts index b8589c9..15a495c 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/ILocation.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/ILocation.d.ts @@ -1,7 +1,7 @@ -import { Exit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; -import { ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; +import { IExit, ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IGroupPostion, ILooseLoot } from "@spt/models/eft/common/ILooseLoot"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILocation { /** Map meta-data */ base: ILocationBase; @@ -15,7 +15,7 @@ export interface ILocation { /** All possible static containers on map + their assign groupings */ statics: IStaticContainer; /** All possible map extracts */ - allExtracts: Exit[]; + allExtracts: IExit[]; } export interface IStaticContainer { containersGroups: Record; @@ -51,12 +51,12 @@ export interface IStaticPropsBase { Rotation: Ixyz; IsGroupPosition: boolean; IsAlwaysSpawn: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: any[]; + Items: IItem[]; } export interface IStaticWeaponProps extends IStaticPropsBase { - Items: Item[]; + Items: IItem[]; } export interface IStaticContainerDetails { staticWeapons: IStaticWeaponProps[]; @@ -76,9 +76,9 @@ export interface IStaticForcedProps { itemTpl: string; } export interface IStaticContainerProps extends IStaticPropsBase { - Items: StaticItem[]; + Items: IStaticItem[]; } -export interface StaticItem { +export interface IStaticItem { _id: string; _tpl: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/ILocationBase.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/ILocationBase.d.ts index 10f1a57..473648d 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/ILocationBase.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/ILocationBase.d.ts @@ -1,18 +1,20 @@ import { MinMax } from "@spt/models/common/MinMax"; import { Ixyz } from "@spt/models/eft/common/Ixyz"; +import { ISpawnpointTemplate } from "./ILooseLoot"; export interface ILocationBase { AccessKeys: string[]; - AirdropParameters: AirdropParameter[]; + AccessKeysPvE: string[]; + AirdropParameters: IAirdropParameter[]; Area: number; AveragePlayTime: number; AveragePlayerLevel: number; - Banners: Banner[]; - BossLocationSpawn: BossLocationSpawn[]; + Banners: IBanner[]; + BossLocationSpawn: IBossLocationSpawn[]; BotAssault: number; BotEasy: number; BotHard: number; BotImpossible: number; - BotLocationModifier: BotLocationModifier; + BotLocationModifier: IBotLocationModifier; BotMarksman: number; BotMax: number; BotMaxPlayer: number; @@ -41,14 +43,14 @@ export interface ILocationBase { Insurance: boolean; IsSecret: boolean; Locked: boolean; - Loot: any[]; - MatchMakerMinPlayersByWaitTime: MinPlayerWaitTime[]; + Loot: ISpawnpointTemplate[]; + MatchMakerMinPlayersByWaitTime: IMinPlayerWaitTime[]; MaxBotPerZone: number; MaxDistToFreePoint: number; MaxPlayers: number; MinDistToExitPoint: number; MinDistToFreePoint: number; - MinMaxBots: MinMaxBot[]; + MinMaxBots: IMinMaxBot[]; MinPlayers: number; MaxCoopGroup: number; Name: string; @@ -57,7 +59,7 @@ export interface ILocationBase { OcculsionCullingEnabled: boolean; OldSpawn: boolean; OpenZones: string; - Preview: Preview; + Preview: IPreview; PlayersRequestCount: number; RequiredPlayerLevel?: number; RequiredPlayerLevelMin?: number; @@ -67,8 +69,8 @@ export interface ILocationBase { ScavMaxPlayersInGroup: number; Rules: string; SafeLocation: boolean; - Scene: Scene; - SpawnPointParams: SpawnPointParam[]; + Scene: IScene; + SpawnPointParams: ISpawnPointParam[]; UnixDateTime: number; _Id: string; doors: any[]; @@ -76,21 +78,33 @@ export interface ILocationBase { EscapeTimeLimitCoop: number; EscapeTimeLimitPVE: number; exit_access_time: number; + ForceOnlineRaidInPVE: boolean; exit_count: number; exit_time: number; - exits: Exit[]; + exits: IExit[]; filter_ex: string[]; limits: ILimit[]; matching_min_seconds: number; GenerateLocalLootCache: boolean; - maxItemCountInLocation: MaxItemCountInLocation[]; + maxItemCountInLocation: IMaxItemCountInLocation[]; sav_summon_seconds: number; tmp_location_field_remove_me: number; + transits: ITransit[]; users_gather_seconds: number; users_spawn_seconds_n: number; users_spawn_seconds_n2: number; users_summon_seconds: number; - waves: Wave[]; + waves: IWave[]; +} +export interface ITransit { + activateAfterSec: string; + active: boolean; + conditions: string; + description: string; + id: number; + location: string; + target: string; + time: number; } export interface INonWaveGroupScenario { Chance: number; @@ -101,7 +115,7 @@ export interface INonWaveGroupScenario { export interface ILimit extends MinMax { items: any[]; } -export interface AirdropParameter { +export interface IAirdropParameter { AirdropPointDeactivateDistance: number; MinPlayersCountToSpawnAirdrop: number; PlaneAirdropChance: number; @@ -113,15 +127,15 @@ export interface AirdropParameter { PlaneAirdropStartMin: number; UnsuccessfulTryPenalty: number; } -export interface Banner { +export interface IBanner { id: string; - pic: Pic; + pic: IPic; } -export interface Pic { +export interface IPic { path: string; rcid: string; } -export interface BossLocationSpawn { +export interface IBossLocationSpawn { BossChance: number; BossDifficult: string; BossEscortAmount: string; @@ -135,48 +149,73 @@ export interface BossLocationSpawn { TriggerId: string; TriggerName: string; Delay?: number; + DependKarma?: boolean; + DependKarmaPVE?: boolean; ForceSpawn?: boolean; IgnoreMaxBots?: boolean; - Supports?: BossSupport[]; + Supports?: IBossSupport[]; sptId?: string; spawnMode: string[]; } -export interface BossSupport { +export interface IBossSupport { BossEscortAmount: string; BossEscortDifficult: string[]; BossEscortType: string; } -export interface BotLocationModifier { +export interface IBotLocationModifier { AccuracySpeed: number; + AdditionalHostilitySettings: IAdditionalHostilitySettings[]; DistToActivate: number; + DistToActivatePvE: number; DistToPersueAxemanCoef: number; DistToSleep: number; + DistToSleepPvE: number; GainSight: number; KhorovodChance: number; MagnetPower: number; MarksmanAccuratyCoef: number; Scattering: number; VisibleDistance: number; + MaxExfiltrationTime: number; + MinExfiltrationTime: number; } -export interface MinMaxBot extends MinMax { +export interface IAdditionalHostilitySettings { + AlwaysEnemies: string[]; + AlwaysFriends: string[]; + BearEnemyChance: number; + BearPlayerBehaviour: string; + BotRole: string; + ChancedEnemies: IChancedEnemy[]; + Neutral: string[]; + SavagePlayerBehaviour: string; + SavageEnemyChance?: number; + UsecEnemyChance: number; + UsecPlayerBehaviour: string; + Warn: string[]; +} +export interface IChancedEnemy { + EnemyChance: number; + Role: string; +} +export interface IMinMaxBot extends MinMax { WildSpawnType: WildSpawnType | string; } -export interface MinPlayerWaitTime { +export interface IMinPlayerWaitTime { minPlayers: number; time: number; } -export interface Preview { +export interface IPreview { path: string; rcid: string; } -export interface Scene { +export interface IScene { path: string; rcid: string; } -export interface SpawnPointParam { +export interface ISpawnPointParam { BotZoneName: string; Categories: string[]; - ColliderParams: ColliderParams; + ColliderParams: IColliderParams; CorePointId: number; DelayToCanSpawnSec: number; Id: string; @@ -185,15 +224,15 @@ export interface SpawnPointParam { Rotation: number; Sides: string[]; } -export interface ColliderParams { +export interface IColliderParams { _parent: string; - _props: Props; + _props: IProps; } -export interface Props { +export interface IProps { Center: Ixyz; Radius: number; } -export interface Exit { +export interface IExit { /** % Chance out of 100 exit will appear in raid */ Chance: number; ChancePVE: number; @@ -217,11 +256,11 @@ export interface Exit { RequirementTip: string; Side?: string; } -export interface MaxItemCountInLocation { +export interface IMaxItemCountInLocation { TemplateId: string; Value: number; } -export interface Wave { +export interface IWave { BotPreset: string; BotSide: string; SpawnPoints: string; @@ -234,9 +273,12 @@ export interface Wave { time_min: number; sptId?: string; ChanceGroup?: number; + SpawnMode: string[]; } export declare enum WildSpawnType { ASSAULT = "assault", MARKSMAN = "marksman", - PMCBOT = "pmcbot" + PMCBOT = "pmcbot", + BOSSKILLA = "bosskilla", + BOSSKNIGHT = "bossknight" } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/ILocationsSourceDestinationBase.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/ILocationsSourceDestinationBase.d.ts index e6bc8ee..4e455a1 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/ILocationsSourceDestinationBase.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/ILocationsSourceDestinationBase.d.ts @@ -1,9 +1,9 @@ import { ILocations } from "@spt/models/spt/server/ILocations"; export interface ILocationsGenerateAllResponse { locations: ILocations; - paths: Path[]; + paths: IPath[]; } -export interface Path { +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/ILooseLoot.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/ILooseLoot.d.ts index b5b538c..392a48c 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/ILooseLoot.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/ILooseLoot.d.ts @@ -1,20 +1,20 @@ import { Ixyz } from "@spt/models/eft/common/Ixyz"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface ILooseLoot { - spawnpointCount: SpawnpointCount; - spawnpointsForced: SpawnpointsForced[]; - spawnpoints: Spawnpoint[]; + spawnpointCount: ISpawnpointCount; + spawnpointsForced: ISpawnpointsForced[]; + spawnpoints: ISpawnpoint[]; } -export interface SpawnpointCount { +export interface ISpawnpointCount { mean: number; std: number; } -export interface SpawnpointsForced { +export interface ISpawnpointsForced { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; } -export interface SpawnpointTemplate { +export interface ISpawnpointTemplate { Id: string; IsContainer: boolean; useGravity: boolean; @@ -23,20 +23,26 @@ export interface SpawnpointTemplate { Rotation: Ixyz; IsAlwaysSpawn: boolean; IsGroupPosition: boolean; - GroupPositions: any[]; + GroupPositions: IGroupPostion[]; Root: string; - Items: Item[]; + Items: IItem[]; } -export interface Spawnpoint { +export interface IGroupPostion { + Name: string; + Weight: number; + Postion: Ixyz; + Rotation: Ixyz; +} +export interface ISpawnpoint { locationId: string; probability: number; - template: SpawnpointTemplate; + template: ISpawnpointTemplate; itemDistribution: ItemDistribution[]; } export interface ItemDistribution { - composedKey: ComposedKey; + composedKey: IComposedKey; relativeProbability: number; } -export interface ComposedKey { +export interface IComposedKey { key: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/IBotBase.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/IBotBase.d.ts index be37845..4def148 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/IBotBase.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/IBotBase.d.ts @@ -1,4 +1,4 @@ -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IUpd } 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"; @@ -12,29 +12,30 @@ export interface IBotBase { /** SPT property - use to store player id - TODO - move to AID ( account id as guid of choice) */ sessionId: string; savage?: string; - Info: Info; - Customization: Customization; - Health: Health; - Inventory: Inventory; - Skills: Skills; - Stats: Stats; + karmaValue: number; + Info: IInfo; + Customization: ICustomization; + Health: IHealth; + Inventory: IInventory; + Skills: ISkills; + Stats: IStats; Encyclopedia: Record; TaskConditionCounters: Record; - InsuredItems: InsuredItem[]; - Hideout: Hideout; + InsuredItems: IInsuredItem[]; + Hideout: IHideout; Quests: IQuestStatus[]; - TradersInfo: Record; + TradersInfo: Record; UnlockedInfo: IUnlockedInfo; - RagfairInfo: RagfairInfo; + RagfairInfo: IRagfairInfo; /** Achievement id and timestamp */ Achievements: Record; RepeatableQuests: IPmcDataRepeatableQuest[]; - Bonuses: Bonus[]; - Notes: Notes; + Bonuses: IBonus[]; + Notes: INotes; CarExtractCounts: Record; CoopExtractCounts: Record; SurvivorClass: SurvivorClass; - WishList: string[]; + WishList: Record; moneyTransferLimitData: IMoneyTransferLimits; /** SPT specific property used during bot generation in raid */ sptIsPmc?: boolean; @@ -56,13 +57,14 @@ export interface ITaskConditionCounter { export interface IUnlockedInfo { unlockedProductionRecipe: string[]; } -export interface Info { +export interface IInfo { EntryPoint: string; Nickname: string; LowerNickname: string; Side: string; SquadInviteRestriction: boolean; HasCoopExtension: boolean; + HasPveGame: boolean; Voice: string; Level: number; Experience: number; @@ -70,22 +72,22 @@ export interface Info { GameVersion: string; AccountType: number; MemberCategory: MemberCategory; + SelectedMemberCategory: MemberCategory; lockedMoveCommands: boolean; SavageLockTime: number; LastTimePlayedAsSavage: number; - Settings: Settings; + Settings: IBotInfoSettings; NicknameChangeDate: number; NeedWipeOptions: any[]; - lastCompletedWipe: LastCompleted; + lastCompletedWipe: ILastCompleted; Bans: IBan[]; BannedState: boolean; BannedUntil: number; IsStreamerModeAvailable: boolean; - lastCompletedEvent?: LastCompleted; - SelectedMemberCategory: number; + lastCompletedEvent?: ILastCompleted; isMigratedSkills: boolean; } -export interface Settings { +export interface IBotInfoSettings { Role: string; BotDifficulty: string; Experience: number; @@ -105,42 +107,43 @@ export declare enum BanType { FRIENDS = 5, CHANGE_NICKNAME = 6 } -export interface Customization { +export interface ICustomization { Head: string; Body: string; Feet: string; Hands: string; } -export interface Health { - Hydration: CurrentMax; - Energy: CurrentMax; - Temperature: CurrentMax; - BodyParts: BodyPartsHealth; +export interface IHealth { + Hydration: ICurrentMax; + Energy: ICurrentMax; + Temperature: ICurrentMax; + BodyParts: IBodyPartsHealth; UpdateTime: number; Immortal?: boolean; } -export interface BodyPartsHealth { - Head: BodyPartHealth; - Chest: BodyPartHealth; - Stomach: BodyPartHealth; - LeftArm: BodyPartHealth; - RightArm: BodyPartHealth; - LeftLeg: BodyPartHealth; - RightLeg: BodyPartHealth; +export interface IBodyPartsHealth { + Head: IBodyPartHealth; + Chest: IBodyPartHealth; + Stomach: IBodyPartHealth; + LeftArm: IBodyPartHealth; + RightArm: IBodyPartHealth; + LeftLeg: IBodyPartHealth; + RightLeg: IBodyPartHealth; } -export interface BodyPartHealth { - Health: CurrentMax; - Effects?: Record; +export interface IBodyPartHealth { + Health: ICurrentMax; + Effects?: Record; } -export interface BodyPartEffectProperties { +export interface IBodyPartEffectProperties { + ExtraData?: any; Time: number; } -export interface CurrentMax { +export interface ICurrentMax { Current: number; Maximum: number; } -export interface Inventory { - items: Item[]; +export interface IInventory { + items: IItem[]; equipment: string; stash: string; sortingTable: string; @@ -149,16 +152,16 @@ export interface Inventory { /** Key is hideout area enum numeric as string e.g. "24", value is area _id */ hideoutAreaStashes: Record; fastPanel: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; } export interface IBaseJsonSkills { Common: Record; - Mastering: Record; + Mastering: Record; Points: number; } -export interface Skills { +export interface ISkills { Common: Common[]; - Mastering: Mastering[]; + Mastering: IMastering[]; Points: number; } export interface IBaseSkill { @@ -171,26 +174,26 @@ export interface Common extends IBaseSkill { PointsEarnedDuringSession?: number; LastAccess?: number; } -export interface Mastering extends IBaseSkill { +export interface IMastering extends IBaseSkill { } -export interface Stats { +export interface IStats { Eft?: IEftStats; } export interface IEftStats { CarriedQuestItems: string[]; - Victims: Victim[]; + Victims: IVictim[]; TotalSessionExperience: number; LastSessionDate: number; - SessionCounters: SessionCounters; - OverallCounters: OverallCounters; + SessionCounters: ISessionCounters; + OverallCounters: IOverallCounters; SessionExperienceMult?: number; ExperienceBonusMult?: number; - Aggressor?: Aggressor; + Aggressor?: IAggressor; DroppedItems?: IDroppedItem[]; - FoundInRaidItems?: FoundInRaidItem[]; - DamageHistory?: DamageHistory; - DeathCause?: DeathCause; - LastPlayerState?: LastPlayerState; + FoundInRaidItems?: IFoundInRaidItem[]; + DamageHistory?: IDamageHistory; + DeathCause?: IDeathCause; + LastPlayerState?: ILastPlayerState; TotalInGameTime: number; SurvivorClass?: string; sptLastRaidFenceRepChange?: number; @@ -200,11 +203,11 @@ export interface IDroppedItem { ItemId: string; ZoneId: string; } -export interface FoundInRaidItem { +export interface IFoundInRaidItem { QuestId: string; ItemId: string; } -export interface Victim { +export interface IVictim { AccountId: string; ProfileId: string; Name: string; @@ -216,17 +219,17 @@ export interface Victim { Weapon: string; Role: string; } -export interface SessionCounters { - Items: CounterKeyValue[]; +export interface ISessionCounters { + Items: ICounterKeyValue[]; } -export interface OverallCounters { - Items: CounterKeyValue[]; +export interface IOverallCounters { + Items: ICounterKeyValue[]; } -export interface CounterKeyValue { +export interface ICounterKeyValue { Key: string[]; Value: number; } -export interface Aggressor { +export interface IAggressor { AccountId: string; ProfileId: string; MainProfileNickname: string; @@ -237,12 +240,12 @@ export interface Aggressor { WeaponName: string; Category: string; } -export interface DamageHistory { +export interface IDamageHistory { LethalDamagePart: string; - LethalDamage: LethalDamage; - BodyParts: BodyPartsDamageHistory; + LethalDamage: ILethalDamage; + BodyParts: IBodyPartsDamageHistory; } -export interface LethalDamage { +export interface ILethalDamage { Amount: number; Type: string; SourceId: string; @@ -250,17 +253,17 @@ export interface LethalDamage { Blunt: boolean; ImpactsCount: number; } -export interface BodyPartsDamageHistory { - Head: DamageStats[]; - Chest: DamageStats[]; - Stomach: DamageStats[]; - LeftArm: DamageStats[]; - RightArm: DamageStats[]; - LeftLeg: DamageStats[]; - RightLeg: DamageStats[]; - Common: DamageStats[]; +export interface IBodyPartsDamageHistory { + Head: IDamageStats[]; + Chest: IDamageStats[]; + Stomach: IDamageStats[]; + LeftArm: IDamageStats[]; + RightArm: IDamageStats[]; + LeftLeg: IDamageStats[]; + RightLeg: IDamageStats[]; + Common: IDamageStats[]; } -export interface DamageStats { +export interface IDamageStats { Amount: number; Type: string; SourceId: string; @@ -268,55 +271,63 @@ export interface DamageStats { Blunt: boolean; ImpactsCount: number; } -export interface DeathCause { +export interface IDeathCause { DamageType: string; Side: string; Role: string; WeaponId: string; } -export interface LastPlayerState { - Info: LastPlayerStateInfo; +export interface ILastPlayerState { + Info: ILastPlayerStateInfo; Customization: Record; Equipment: any; } -export interface LastPlayerStateInfo { +export interface ILastPlayerStateInfo { Nickname: string; Side: string; Level: number; MemberCategory: MemberCategory; } -export interface BackendCounter { +export interface IBackendCounter { id: string; qid?: string; value: number; } -export interface InsuredItem { +export interface IInsuredItem { /** Trader Id item was insured by */ tid: string; itemId: string; } -export interface Hideout { - Production: Record; - Areas: HideoutArea[]; - Improvement: Record; +export interface IHideout { + Production: Record; + Areas: IBotHideoutArea[]; + Improvements: Record; + HideoutCounters: IHideoutCounters; Seed: number; + MannequinPoses: string[]; sptUpdateLastRunTimestamp: number; } +export interface IHideoutCounters { + fuelCounter: number; + airFilterCounter: number; + waterFilterCounter: number; + craftingTimeCounter: number; +} export interface IHideoutImprovement { completed: boolean; improveCompleteTimestamp: number; } -export interface Productive { - Products: Product[]; +export interface IProductive { + Products: IProduct[]; /** Seconds passed of production */ Progress?: number; /** Is craft in some state of being worked on by client (crafting/ready to pick up) */ inProgress?: boolean; - StartTimestamp?: number; + StartTimestamp?: string; SkipTime?: number; /** Seconds needed to fully craft */ ProductionTime?: number; - GivenItemsInStart?: string[]; + GivenItemsInStart?: IItem[]; Interrupted?: boolean; Code?: string; Decoded?: boolean; @@ -331,22 +342,23 @@ export interface Productive { /** 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[]; + sptRequiredTools?: IItem[]; + sptIsCultistCircle?: boolean; } -export interface Production extends Productive { +export interface IProduction extends IProductive { RecipeId: string; SkipTime: number; ProductionTime: number; } -export interface ScavCase extends Productive { +export interface IScavCase extends IProductive { RecipeId: string; } -export interface Product { +export interface IProduct { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface HideoutArea { +export interface IBotHideoutArea { type: HideoutAreas; level: number; active: boolean; @@ -354,26 +366,25 @@ export interface HideoutArea { /** Must be integer */ completeTime: number; constructing: boolean; - slots: HideoutSlot[]; + slots: IHideoutSlot[]; lastRecipe: string; } -export interface HideoutSlot { +export interface IHideoutSlot { /** SPT specific value to keep track of what index this slot is (0,1,2,3 etc) */ locationIndex: number; - item?: HideoutItem[]; + item?: IHideoutItem[]; } -export interface HideoutItem { +export interface IHideoutItem { _id: string; _tpl: string; - upd?: Upd; + upd?: IUpd; } -export interface LastCompleted { +export interface ILastCompleted { $oid: string; } -export interface Notes { - Notes: Note[]; +export interface INotes { + Notes: INote[]; } -export type CarExtractCounts = {}; export declare enum SurvivorClass { UNKNOWN = 0, NEUTRALIZER = 1, @@ -390,20 +401,20 @@ export interface IQuestStatus { completedConditions?: string[]; availableAfter?: number; } -export interface TraderInfo { - loyaltyLevel: number; +export interface ITraderInfo { + loyaltyLevel?: number; salesSum: number; standing: number; nextResupply: number; unlocked: boolean; disabled: boolean; } -export interface RagfairInfo { +export interface IRagfairInfo { rating: number; isRatingGrowing: boolean; offers: IRagfairOffer[]; } -export interface Bonus { +export interface IBonus { id?: string; type: BonusType; templateId?: string; @@ -415,7 +426,7 @@ export interface Bonus { filter?: string[]; skillType?: BonusSkillType; } -export interface Note { +export interface INote { Time: number; Text: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/IBotType.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/IBotType.d.ts index 074a7d6..6d4b0c7 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/IBotType.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/IBotType.d.ts @@ -1,28 +1,28 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IBotType { - appearance: Appearance; - chances: Chances; - difficulty: Difficulties; - experience: Experience; + appearance: IAppearance; + chances: IChances; + difficulty: IDifficulties; + experience: IExperience; firstName: string[]; - generation: Generation; - health: Health; - inventory: Inventory; + generation: IGeneration; + health: IHealth; + inventory: IInventory; lastName: string[]; - skills: Skills; + skills: ISkills; } -export interface Appearance { +export interface IAppearance { body: Record; feet: Record; hands: Record; head: Record; voice: Record; } -export interface Chances { +export interface IChances { equipment: EquipmentChances; - weaponMods: ModsChances; - equipmentMods: ModsChances; + weaponMods: IModsChances; + equipmentMods: IModsChances; } export interface EquipmentChances { ArmBand: number; @@ -40,7 +40,7 @@ export interface EquipmentChances { SecuredContainer: number; TacticalVest: number; } -export interface ModsChances { +export interface IModsChances { mod_charge: number; mod_equipment: number; mod_equipment_000: number; @@ -74,13 +74,13 @@ export interface ModsChances { mod_tactical_003: number; mod_handguard: number; } -export interface Difficulties { - easy: Difficulty; - normal: Difficulty; - hard: Difficulty; - impossible: Difficulty; +export interface IDifficulties { + easy: IDifficultyCategories; + normal: IDifficultyCategories; + hard: IDifficultyCategories; + impossible: IDifficultyCategories; } -export interface Difficulty { +export interface IDifficultyCategories { Aiming: Record; Boss: Record; Change: Record; @@ -96,42 +96,42 @@ export interface Difficulty { Scattering: Record; Shoot: Record; } -export interface Experience { +export interface IExperience { aggressorBonus: number; level: MinMax; reward: MinMax; standingForKill: number; } -export interface Generation { - items: GenerationWeightingItems; +export interface IGeneration { + items: IGenerationWeightingItems; } -export interface GenerationWeightingItems { - grenades: GenerationData; - healing: GenerationData; - drugs: GenerationData; - food: GenerationData; - drink: GenerationData; - currency: GenerationData; - stims: GenerationData; - backpackLoot: GenerationData; - pocketLoot: GenerationData; - vestLoot: GenerationData; - magazines: GenerationData; - specialItems: GenerationData; +export interface IGenerationWeightingItems { + grenades: IGenerationData; + healing: IGenerationData; + drugs: IGenerationData; + food: IGenerationData; + drink: IGenerationData; + currency: IGenerationData; + stims: IGenerationData; + backpackLoot: IGenerationData; + pocketLoot: IGenerationData; + vestLoot: IGenerationData; + magazines: IGenerationData; + specialItems: IGenerationData; } -export interface GenerationData { +export interface IGenerationData { /** key: number of items, value: weighting */ weights: Record; /** Array of item tpls */ whitelist: Record; } -export interface Health { - BodyParts: BodyPart[]; +export interface IHealth { + BodyParts: IBodyPart[]; Energy: MinMax; Hydration: MinMax; Temperature: MinMax; } -export interface BodyPart { +export interface IBodyPart { Chest: MinMax; Head: MinMax; LeftArm: MinMax; @@ -140,13 +140,13 @@ export interface BodyPart { RightLeg: MinMax; Stomach: MinMax; } -export interface Inventory { - equipment: Equipment; - Ammo: Record>; - items: Items; - mods: Mods; +export interface IInventory { + equipment: IEquipment; + Ammo: IAmmo; + items: IItemPools; + mods: IMods; } -export interface Equipment { +export interface IEquipment { ArmBand: Record; ArmorVest: Record; Backpack: Record; @@ -162,11 +162,12 @@ export interface Equipment { SecuredContainer: Record; TacticalVest: Record; } -export interface Items { +export interface IItemPools { Backpack: Record; Pockets: Record; SecuredContainer: Record; SpecialLoot: Record; TacticalVest: Record; } -export type Mods = Record>; +export type IAmmo = Record>; +export type IMods = Record>; diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/ICustomizationItem.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/ICustomizationItem.d.ts index 3883765..97dc708 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/ICustomizationItem.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/ICustomizationItem.d.ts @@ -17,13 +17,13 @@ export interface Props { Body: string; Hands: string; Feet: string; - Prefab: Prefab; - WatchPrefab: Prefab; + Prefab: IPrefab; + WatchPrefab: IPrefab; IntegratedArmorVest: boolean; WatchPosition: Ixyz; WatchRotation: Ixyz; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/IHandbookBase.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/IHandbookBase.d.ts index 7d7db07..697b782 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/IHandbookBase.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/IHandbookBase.d.ts @@ -1,15 +1,15 @@ export interface IHandbookBase { - Categories: Category[]; - Items: HandbookItem[]; + Categories: IHandbookCategory[]; + Items: IHandbookItem[]; } -export interface Category { +export interface IHandbookCategory { Id: string; ParentId?: string; Icon: string; Color: string; Order: string; } -export interface HandbookItem { +export interface IHandbookItem { Id: string; ParentId: string; Price: number; diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/IItem.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/IItem.d.ts index 8f60c4f..8139fa1 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/IItem.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/IItem.d.ts @@ -1,99 +1,107 @@ -export interface Item { +export interface IItem { _id: string; _tpl: string; parentId?: string; slotId?: string; - location?: Location | number; - upd?: Upd; + location?: IItemLocation | number; + upd?: IUpd; } -export interface Upd { - Buff?: Buff; +export interface IItemLocation { + x: number; + y: number; + r: string | number; + isSearched?: boolean; + /** SPT property? */ + rotation?: string | boolean; +} +export interface IUpd { + Buff?: IUpdBuff; OriginalStackObjectsCount?: number; - Togglable?: Togglable; - Map?: Map; - Tag?: Tag; + Togglable?: IUpdTogglable; + Map?: IUpdMap; + Tag?: IUpdTag; /** SPT specific property, not made by BSG */ sptPresetId?: string; - FaceShield?: FaceShield; + FaceShield?: IUpdFaceShield; StackObjectsCount?: number; UnlimitedCount?: boolean; - Repairable?: Repairable; - RecodableComponent?: RecodableComponent; - FireMode?: FireMode; + Repairable?: IUpdRepairable; + RecodableComponent?: IUpdRecodableComponent; + FireMode?: IUpdFireMode; SpawnedInSession?: boolean; - Light?: Light; - Key?: Key; - Resource?: Resource; - Sight?: Sight; - MedKit?: MedKit; - FoodDrink?: FoodDrink; - Dogtag?: Dogtag; + Light?: IUpdLight; + Key?: IUpdKey; + Resource?: IUpdResource; + Sight?: IUpdSight; + MedKit?: IUpdMedKit; + FoodDrink?: IUpdFoodDrink; + Dogtag?: IUpdDogtag; BuyRestrictionMax?: number; BuyRestrictionCurrent?: number; - Foldable?: Foldable; - SideEffect?: SideEffect; - RepairKit?: RepairKit; - CultistAmulet?: ICultistAmulet; + Foldable?: IUpdFoldable; + SideEffect?: IUpdSideEffect; + RepairKit?: IUpdRepairKit; + CultistAmulet?: IUpdCultistAmulet; } -export interface Buff { +export interface IUpdBuff { rarity: string; buffType: string; value: number; thresholdDurability?: number; } -export interface Togglable { +export interface IUpdTogglable { On: boolean; } -export interface Map { - Markers: MapMarker[]; +export interface IUpdMap { + Markers: IMapMarker[]; } -export interface MapMarker { +export interface IMapMarker { X: number; Y: number; } -export interface Tag { +export interface IUpdTag { Color: number; Name: string; } -export interface FaceShield { +export interface IUpdFaceShield { Hits: number; } -export interface Repairable { +export interface IUpdRepairable { Durability: number; MaxDurability: number; } -export interface RecodableComponent { +export interface IUpdRecodableComponent { IsEncoded: boolean; } -export interface MedKit { +export interface IUpdMedKit { HpResource: number; } -export interface Sight { +export interface IUpdSight { ScopesCurrentCalibPointIndexes: number[]; ScopesSelectedModes: number[]; SelectedScope: number; } -export interface Foldable { +export interface IUpdFoldable { Folded: boolean; } -export interface FireMode { +export interface IUpdFireMode { FireMode: string; } -export interface FoodDrink { +export interface IUpdFoodDrink { HpPercent: number; } -export interface Key { +export interface IUpdKey { NumberOfUsages: number; } -export interface Resource { +export interface IUpdResource { Value: number; UnitsConsumed: number; } -export interface Light { +export interface IUpdLight { IsActive: boolean; SelectedMode: number; } -export interface Dogtag { +export interface IUpdDogtag { AccountId: string; ProfileId: string; Nickname: string; @@ -106,20 +114,12 @@ export interface Dogtag { KillerName: string; WeaponName: string; } -export interface Location { - x: number; - y: number; - r: string | number; - isSearched?: boolean; - /** SPT property? */ - rotation?: string | boolean; -} -export interface SideEffect { +export interface IUpdSideEffect { Value: number; } -export interface RepairKit { +export interface IUpdRepairKit { Resource: number; } -export interface ICultistAmulet { +export interface IUpdCultistAmulet { NumberOfUsages: number; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/ILocationServices.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/ILocationServices.d.ts new file mode 100644 index 0000000..399ae7b --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/ILocationServices.d.ts @@ -0,0 +1,71 @@ +import { Ixyz } from "@spt/models/eft/common/Ixyz"; +export interface ILocationServices { + TraderServerSettings: ITraderServerSettings; + BTRServerSettings: IBtrServerSettings; +} +export interface ITraderServerSettings { + TraderServices: ITraderServices; +} +export interface ITraderServices { + ExUsecLoyalty: ITraderService; + ZryachiyAid: ITraderService; + CultistsAid: ITraderService; + PlayerTaxi: ITraderService; + BtrItemsDelivery: ITraderService; + BtrBotCover: ITraderService; + TransitItemsDelivery: ITraderService; +} +export interface ITraderService { + TraderId: string; + TraderServiceType: string; + Requirements: IServiceRequirements; + ServiceItemCost: Record; + UniqueItems: string[]; +} +export interface IServiceRequirements { + CompletedQuests: ICompletedQuest[]; + Standings: Record; +} +export interface ICompletedQuest { + QuestId: string; +} +export interface IStandingRequirement { + Value: number; +} +export interface IServiceItemCostDetails { + Count: number; +} +export interface IBtrServerSettings { + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; + ServerMapBTRSettings: Record; +} +export interface IServerMapBtrsettings { + MapID: string; + ChanceSpawn: number; + SpawnPeriod: Ixyz; + MoveSpeed: number; + ReadyToDepartureTime: number; + CheckTurnDistanceTime: number; + TurnCheckSensitivity: number; + DecreaseSpeedOnTurnLimit: number; + EndSplineDecelerationDistance: number; + AccelerationSpeed: number; + DecelerationSpeed: number; + PauseDurationRange: Ixyz; + BodySwingReturnSpeed: number; + BodySwingDamping: number; + BodySwingIntensity: number; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/ILocationsBase.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/ILocationsBase.d.ts index 16bca24..e773096 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/ILocationsBase.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/ILocationsBase.d.ts @@ -1,9 +1,9 @@ export interface ILocationsBase { - locations: Locations; - paths: Path[]; + locations: ILocations; + paths: IPath[]; } -export type Locations = {}; -export interface Path { +export type ILocations = {}; +export interface IPath { Source: string; Destination: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/IMatch.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/IMatch.d.ts index 042f5bb..5d18f57 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/IMatch.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/IMatch.d.ts @@ -1,7 +1,7 @@ export interface IMatch { - metrics: Metrics; + metrics: IMetrics; } -export interface Metrics { +export interface IMetrics { Keys: number[]; NetProcessingBins: number[]; RenderBins: number[]; diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/IProfileTemplate.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/IProfileTemplate.d.ts index 6ba9221..a1c9c11 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/IProfileTemplate.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/IProfileTemplate.d.ts @@ -21,9 +21,9 @@ export interface ITemplateSide { suits: string[]; dialogues: Record; userbuilds: IUserBuilds; - trader: ProfileTraderTemplate; + trader: IProfileTraderTemplate; } -export interface ProfileTraderTemplate { +export interface IProfileTraderTemplate { initialLoyaltyLevel: Record; initialStanding: Record; setQuestsAvailableForStart?: boolean; diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/IQuest.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/IQuest.d.ts index 54ff191..543a2a9 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/IQuest.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/IQuest.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,7 +50,7 @@ export interface IQuestCondition { index?: number; compareMethod?: string; dynamicLocale: boolean; - visibilityConditions?: VisibilityCondition[]; + visibilityConditions?: IVisibilityCondition[]; globalQuestCounterId?: string; parentId?: string; target: string[] | string; @@ -61,8 +61,11 @@ export interface IQuestCondition { dispersion?: number; onlyFoundInRaid?: boolean; oneSessionOnly?: boolean; + isResetOnConditionFailed?: boolean; + isNecessary?: boolean; doNotResetIfCounterCompleted?: boolean; dogtagLevel?: number; + traderId?: string; maxDurability?: number; minDurability?: number; counter?: IQuestConditionCounter; @@ -120,7 +123,7 @@ export interface IDaytimeCounter { from: number; to: number; } -export interface VisibilityCondition { +export interface IVisibilityCondition { id: string; target: string; value?: number; @@ -143,7 +146,7 @@ export interface IQuestReward { type: QuestRewardType; index: number; target?: string; - items?: Item[]; + items?: IItem[]; loyaltyLevel?: number; /** Hideout area id */ traderId?: string; diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/IRepeatableQuests.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/IRepeatableQuests.d.ts index 0753cff..37e582a 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/IRepeatableQuests.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/IRepeatableQuests.d.ts @@ -41,14 +41,14 @@ export interface IOptions { Completion: ICompletionFilter; } export interface ICompletionFilter { - itemsBlacklist: ItemsBlacklist[]; - itemsWhitelist: ItemsWhitelist[]; + itemsBlacklist: IItemsBlacklist[]; + itemsWhitelist: IItemsWhitelist[]; } -export interface ItemsBlacklist { +export interface IItemsBlacklist { minPlayerLevel: number; itemIds: string[]; } -export interface ItemsWhitelist { +export interface IItemsWhitelist { minPlayerLevel: number; itemIds: string[]; } diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/ITemplateItem.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/ITemplateItem.d.ts index c5b2da3..145e013 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/ITemplateItem.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/ITemplateItem.d.ts @@ -25,8 +25,9 @@ export interface Props { SpawnChance?: number; CreditsPrice?: number; ItemSound?: string; - Prefab?: Prefab; - UsePrefab?: Prefab; + Prefab?: IPrefab; + UsePrefab?: IPrefab; + airDropTemplateId?: string; StackObjectsCount?: number; NotShownInSlot?: boolean; ExaminedByDefault?: boolean; @@ -51,6 +52,7 @@ export interface Props { ExtraSizeLeft?: number; ExtraSizeRight?: number; ExtraSizeUp?: number; + FlareTypes?: string[]; ExtraSizeDown?: number; ExtraSizeForceAdd?: boolean; MergesWithChildren?: boolean; @@ -70,8 +72,8 @@ export interface Props { MaxResource?: number; Resource?: number; DogTagQualities?: boolean; - Grids?: Grid[]; - Slots?: Slot[]; + Grids?: IGrid[]; + Slots?: ISlot[]; CanPutIntoDuringTheRaid?: boolean; CantRemoveFromSlotsDuringRaid?: string[]; KeyIds?: string[]; @@ -93,13 +95,16 @@ export interface Props { IsAnimated?: boolean; HasShoulderContact?: boolean; SightingRange?: number; + ZoomSensitivity?: number; DoubleActionAccuracyPenaltyMult?: number; - ModesCount?: any; + ModesCount?: number | number[]; DurabilityBurnModificator?: number; HeatFactor?: number; CoolFactor?: number; muzzleModType?: string; CustomAimPlane?: string; + IsAdjustableOptic?: boolean; + MinMaxFov?: Ixyz; sightModType?: string; aimingSensitivity?: number; SightModesCount?: number; @@ -135,7 +140,7 @@ export interface Props { PixelationBlockCount?: number; ShiftsAimCamera?: number; magAnimationIndex?: number; - Cartridges?: Slot[]; + Cartridges?: ISlot[]; CanFast?: boolean; CanHit?: boolean; CanAdmin?: boolean; @@ -213,7 +218,7 @@ export interface Props { defAmmo?: string; AdjustCollimatorsToTrajectory?: boolean; shotgunDispersion?: number; - Chambers?: Slot[]; + Chambers?: ISlot[]; CameraSnap?: number; CameraToWeaponAngleSpeedRange?: Ixyz; CameraToWeaponAngleStep?: number; @@ -226,6 +231,8 @@ export interface Props { RotationCenterNoStock?: Ixyz; ShotsGroupSettings?: IShotsGroupSettings[]; FoldedSlot?: string; + ForbidMissingVitalParts?: boolean; + ForbidNonEmptyContainers?: boolean; CompactHandling?: boolean; MinRepairDegradation?: number; MaxRepairDegradation?: number; @@ -263,6 +270,13 @@ export interface Props { RecoilStableIndexShot?: number; MinRepairKitDegradation?: number; MaxRepairKitDegradation?: number; + MountCameraSnapMultiplier?: number; + MountHorizontalRecoilMultiplier?: number; + MountReturnSpeedHandMultiplier?: number; + MountVerticalRecoilMultiplier?: number; + MountingHorizontalOutOfBreathMultiplier?: number; + MountingPosition?: Ixyz; + MountingVerticalOutOfBreathMultiplier?: Ixyz; BlocksEarpiece?: boolean; BlocksEyewear?: boolean; BlocksHeadwear?: boolean; @@ -379,6 +393,7 @@ export interface Props { ShowHitEffectOnExplode?: boolean; ExplosionType?: string; AmmoLifeTimeSec?: number; + AmmoTooltipClass?: string; Contusion?: Ixyz; ArmorDistanceDistanceDamage?: Ixyz; Blindness?: Ixyz; @@ -388,7 +403,7 @@ export interface Props { LightAndSoundShotSelfContusionStrength?: number; MalfMisfireChance?: number; MalfFeedChance?: number; - StackSlots?: StackSlot[]; + StackSlots?: IStackSlot[]; type?: string; eqMin?: number; eqMax?: number; @@ -401,6 +416,7 @@ export interface Props { explDelay?: number; EmitTime?: number; CanBeHiddenDuringThrow?: boolean; + CanPlantOnGround?: boolean; MinTimeToContactExplode?: number; ExplosionEffectType?: string; LinkedWeapon?: string; @@ -413,7 +429,7 @@ export interface Props { RepairStrategyTypes?: string[]; IsEncoded?: boolean; LayoutName?: string; - Lower75Prefab?: Prefab; + Lower75Prefab?: IPrefab; MaxUsages?: number; ScavKillExpPenalty?: number; ScavKillExpPenaltyPVE?: number; @@ -426,19 +442,19 @@ export interface IHealthEffect { type: string; value: number; } -export interface Prefab { +export interface IPrefab { path: string; rcid: string; } -export interface Grid { +export interface IGrid { _name: string; _id: string; _parent: string; - _props: GridProps; + _props: IGridProps; _proto: string; } -export interface GridProps { - filters: GridFilter[]; +export interface IGridProps { + filters: IGridFilter[]; cellsH: number; cellsV: number; minCount: number; @@ -446,25 +462,26 @@ export interface GridProps { maxWeight: number; isSortingTable: boolean; } -export interface GridFilter { +export interface IGridFilter { Filter: string[]; ExcludedFilter: string[]; + locked?: boolean; } -export interface Slot { +export interface ISlot { _name: string; _id: string; _parent: string; - _props: SlotProps; + _props: ISlotProps; _max_count?: number; _required?: boolean; _mergeSlotWithChildren?: boolean; _proto: string; } -export interface SlotProps { - filters: SlotFilter[]; +export interface ISlotProps { + filters: ISlotFilter[]; MaxStackCount?: number; } -export interface SlotFilter { +export interface ISlotFilter { Shift?: number; locked?: boolean; Plate?: string; @@ -473,17 +490,17 @@ export interface SlotFilter { Filter: string[]; AnimationIndex?: number; } -export interface StackSlot { +export interface IStackSlot { _name?: string; _id: string; _parent: string; _max_count: number; - _props: StackSlotProps; + _props: IStackSlotProps; _proto: string; upd?: any; } -export interface StackSlotProps { - filters: SlotFilter[]; +export interface IStackSlotProps { + filters: ISlotFilter[]; } export interface IRandomLootSettings { allowToSpawnIdenticalItems: boolean; @@ -500,14 +517,14 @@ export interface IRandomLootExcluded { rarity: string[]; templates: any[]; } -export interface EffectsHealth { - Energy: EffectsHealthProps; - Hydration: EffectsHealthProps; +export interface IEffectsHealth { + Energy: IEffectsHealthProps; + Hydration: IEffectsHealthProps; } -export interface EffectsHealthProps { +export interface IEffectsHealthProps { value: number; } -export interface EffectsDamage { +export interface IEffectsDamage { Pain: IEffectDamageProps; LightBleeding: IEffectDamageProps; HeavyBleeding: IEffectDamageProps; diff --git a/TypeScript/9RouterHooks/types/models/eft/common/tables/ITrader.d.ts b/TypeScript/9RouterHooks/types/models/eft/common/tables/ITrader.d.ts index 40cf004..9e161c8 100644 --- a/TypeScript/9RouterHooks/types/models/eft/common/tables/ITrader.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/common/tables/ITrader.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { ITraderServiceModel } from "@spt/models/spt/services/ITraderServiceModel"; export interface ITrader { @@ -23,16 +23,20 @@ export interface ITraderBase { discount: number; discount_end: number; gridHeight: number; - insurance: Insurance; + sell_modifier_for_prohibited_items?: number; + insurance: ITraderInsurance; items_buy: IItemBuyData; items_buy_prohibited: IItemBuyData; + isCanTransferItems?: boolean; + transferableItems?: IItemBuyData; + prohibitedTransferableItems?: IItemBuyData; location: string; - loyaltyLevels: LoyaltyLevel[]; + loyaltyLevels: ITraderLoyaltyLevel[]; medic: boolean; name: string; nextResupply: number; nickname: string; - repair: Repair; + repair: ITraderRepair; sell_category: string[]; surname: string; unlockedByDefault: boolean; @@ -41,7 +45,7 @@ export interface IItemBuyData { category: string[]; id_list: string[]; } -export interface Insurance { +export interface ITraderInsurance { availability: boolean; excluded_category: string[]; max_return_hour: number; @@ -49,7 +53,7 @@ export interface Insurance { min_payment: number; min_return_hour: number; } -export interface LoyaltyLevel { +export interface ITraderLoyaltyLevel { buy_price_coef: number; exchange_price_coef: number; heal_price_coef: number; @@ -59,18 +63,18 @@ export interface LoyaltyLevel { minStanding: number; repair_price_coef: number; } -export interface Repair { +export interface ITraderRepair { availability: boolean; currency: string; currency_coefficient: number; excluded_category: string[]; /** Doesn't exist in client object */ - excluded_id_list: any[]; + excluded_id_list: string[]; quality: number; } export interface ITraderAssort { nextResupply: number; - items: Item[]; + items: IItem[]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/9RouterHooks/types/models/eft/customization/IBuyClothingRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/customization/IBuyClothingRequestData.d.ts index d19b70d..3fea512 100644 --- a/TypeScript/9RouterHooks/types/models/eft/customization/IBuyClothingRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/customization/IBuyClothingRequestData.d.ts @@ -1,9 +1,9 @@ export interface IBuyClothingRequestData { Action: "CustomizationBuy"; offer: string; - items: ClothingItem[]; + items: IPaymentItemForClothing[]; } -export interface ClothingItem { +export interface IPaymentItemForClothing { del: boolean; id: string; count: number; diff --git a/TypeScript/9RouterHooks/types/models/eft/game/IGameConfigResponse.d.ts b/TypeScript/9RouterHooks/types/models/eft/game/IGameConfigResponse.d.ts index 2bff352..c44867e 100644 --- a/TypeScript/9RouterHooks/types/models/eft/game/IGameConfigResponse.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/game/IGameConfigResponse.d.ts @@ -5,7 +5,7 @@ export interface IGameConfigResponse { ndaFree: boolean; taxonomy: number; activeProfileId: string; - backend: Backend; + backend: IBackend; useProtobuf: boolean; utc_time: number; /** Total in game time */ @@ -13,7 +13,7 @@ export interface IGameConfigResponse { reportAvailable: boolean; twitchEventMember: boolean; } -export interface Backend { +export interface IBackend { Lobby: string; Trading: string; Messaging: string; diff --git a/TypeScript/9RouterHooks/types/models/eft/health/IHealthTreatmentRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/health/IHealthTreatmentRequestData.d.ts index 598e60c..e544bf9 100644 --- a/TypeScript/9RouterHooks/types/models/eft/health/IHealthTreatmentRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/health/IHealthTreatmentRequestData.d.ts @@ -1,31 +1,31 @@ export interface IHealthTreatmentRequestData { Action: "RestoreHealth"; trader: string; - items: Cost[]; - difference: Difference; + items: IItemCost[]; + difference: IDifference; timestamp: number; } -export interface Cost { +export interface IItemCost { /** Id of stack to take money from */ id: string; /** Amount of money to take off player for treatment */ count: number; } -export interface Difference { - BodyParts: BodyParts; +export interface IDifference { + BodyParts: IBodyParts; Energy: number; Hydration: number; } -export interface BodyParts { - Head: BodyPart; - Chest: BodyPart; - Stomach: BodyPart; - LeftArm: BodyPart; - RightArm: BodyPart; - LeftLeg: BodyPart; - RightLeg: BodyPart; +export interface IBodyParts { + Head: IBodyPart; + Chest: IBodyPart; + Stomach: IBodyPart; + LeftArm: IBodyPart; + RightArm: IBodyPart; + LeftLeg: IBodyPart; + RightLeg: IBodyPart; } -export interface BodyPart { +export interface IBodyPart { Health: number; /** Effects in array are to be removed */ Effects: string[]; diff --git a/TypeScript/9RouterHooks/types/models/eft/health/ISyncHealthRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/health/ISyncHealthRequestData.d.ts index 20e32f6..7c7d05c 100644 --- a/TypeScript/9RouterHooks/types/models/eft/health/ISyncHealthRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/health/ISyncHealthRequestData.d.ts @@ -1,20 +1,20 @@ export interface ISyncHealthRequestData { - Health: Health; + Health: IBodyPartCollection; IsAlive: boolean; Hydration?: number; Energy?: number; Temperature?: number; } -export interface Health { - Head?: BodyPartHealth; - Chest?: BodyPartHealth; - Stomach?: BodyPartHealth; - LeftArm?: BodyPartHealth; - RightArm?: BodyPartHealth; - LeftLeg?: BodyPartHealth; - RightLeg?: BodyPartHealth; +export interface IBodyPartCollection { + Head?: IBodyPartHealth; + Chest?: IBodyPartHealth; + Stomach?: IBodyPartHealth; + LeftArm?: IBodyPartHealth; + RightArm?: IBodyPartHealth; + LeftLeg?: IBodyPartHealth; + RightLeg?: IBodyPartHealth; } -export interface BodyPartHealth { +export interface IBodyPartHealth { Maximum: number; Current: number; Effects: Record; diff --git a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutArea.d.ts b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutArea.d.ts index ca0eb07..0159c1d 100644 --- a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutArea.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutArea.d.ts @@ -1,3 +1,4 @@ +import { IRequirementBase } from "@spt/models/eft/hideout/IHideoutProduction"; import { BonusSkillType } from "@spt/models/enums/BonusSkillType"; import { BonusType } from "@spt/models/enums/BonusType"; export interface IHideoutArea { @@ -50,13 +51,12 @@ export interface IStageImprovementRequirement { templateId: string; type: string; } -export interface IStageRequirement { +export interface IStageRequirement extends IRequirementBase { areaType?: number; requiredLevel?: number; - type: string; templateId?: string; count?: number; - isEncoded: false; + isEncoded?: false; isFunctional?: boolean; traderId?: string; loyaltyLevel?: number; diff --git a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts new file mode 100644 index 0000000..6f7c9b7 --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData.d.ts @@ -0,0 +1,4 @@ +export interface IHideoutCircleOfCultistProductionStartRequestData { + Action: "HideoutCircleOfCultistProductionStart"; + timestamp: number; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts new file mode 100644 index 0000000..97714de --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutDeleteProductionRequestData.d.ts @@ -0,0 +1,5 @@ +export interface IHideoutDeleteProductionRequestData { + Action: "HideoutDeleteProductionCommand"; + recipeId: string; + timestamp: number; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutProduction.d.ts b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutProduction.d.ts index 7373a4f..a773daa 100644 --- a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutProduction.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutProduction.d.ts @@ -1,3 +1,9 @@ +import { MinMax } from "@spt/models/common/MinMax"; +export interface IHideoutProductionData { + recipes: IHideoutProduction[]; + scavRecipes: IScavRecipe[]; + cultistRecipes: ICultistRecipe[]; +} export interface IHideoutProduction { _id: string; areaType: number; @@ -12,14 +18,30 @@ export interface IHideoutProduction { count: number; productionLimitCount: number; } -export interface Requirement { +export interface Requirement extends IRequirementBase { templateId?: string; count?: number; isEncoded?: boolean; isFunctional?: boolean; - type: string; areaType?: number; requiredLevel?: number; resource?: number; questId?: string; } +export interface IRequirementBase { + type: string; +} +export type IScavRecipe = { + _id: string; + requirements: Requirement[]; + productionTime: number; + endProducts: IEndProducts; +}; +export interface IEndProducts { + Common: MinMax; + Rare: MinMax; + Superrare: MinMax; +} +export type ICultistRecipe = { + _id: string; +}; diff --git a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutSettingsBase.d.ts b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutSettingsBase.d.ts index 8e45939..513d3c7 100644 --- a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutSettingsBase.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutSettingsBase.d.ts @@ -2,5 +2,6 @@ export interface IHideoutSettingsBase { generatorSpeedWithoutFuel: number; generatorFuelFlowRate: number; airFilterUnitFlowRate: number; + cultistAmuletBonusPercent: number; gpuBoostRate: number; } diff --git a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts index dfb92e2..1c97b22 100644 --- a/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/hideout/IHideoutSingleProductionStartRequestData.d.ts @@ -1,11 +1,11 @@ export interface IHideoutSingleProductionStartRequestData { Action: "HideoutSingleProductionStart"; recipeId: string; - items: Item[]; - tools: Item[]; + items: IHandoverItem[]; + tools: IHandoverItem[]; timestamp: number; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/9RouterHooks/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts index a27bfbb..7e0fe98 100644 --- a/TypeScript/9RouterHooks/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/inRaid/IItemDeliveryRequestData.d.ts @@ -1,5 +1,5 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IItemDeliveryRequestData { - items: Item[]; + items: IItem[]; traderId: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/inRaid/ISaveProgressRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/inRaid/ISaveProgressRequestData.d.ts deleted file mode 100644 index b654088..0000000 --- a/TypeScript/9RouterHooks/types/models/eft/inRaid/ISaveProgressRequestData.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -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; - isPlayerScav: boolean; - health: ISyncHealthRequestData; - insurance: IInsuredItemsData[]; -} diff --git a/TypeScript/9RouterHooks/types/models/eft/inRaid/IScavSaveRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/inRaid/IScavSaveRequestData.d.ts new file mode 100644 index 0000000..e96a9ed --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/inRaid/IScavSaveRequestData.d.ts @@ -0,0 +1,4 @@ +import { IPostRaidPmcData } from "@spt/models/eft/common/IPmcData"; +export interface IScavSaveRequestData { + profile: IPostRaidPmcData; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemDirectRequest.d.ts b/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemDirectRequest.d.ts index 1616901..7f58d00 100644 --- a/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemDirectRequest.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemDirectRequest { /** Item and child mods to add to player inventory */ - itemWithModsToAdd: Item[]; + itemWithModsToAdd: IItem[]; foundInRaid: boolean; callback: (buyCount: number) => void; useSortingTable: boolean; diff --git a/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemRequestData.d.ts index 3fa86dc..70241bc 100644 --- a/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemRequestData.d.ts @@ -1,9 +1,9 @@ export interface IAddItemRequestData { /** Trader id */ tid: string; - items: AddItem[]; + items: IItemToAdd[]; } -export interface AddItem { +export interface IItemToAdd { count: number; sptIsPreset?: boolean; item_id: string; diff --git a/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemTempObject.d.ts b/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemTempObject.d.ts index 7b3a6ea..a822d56 100644 --- a/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemTempObject.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemTempObject.d.ts @@ -1,8 +1,8 @@ -import { Item, Location } from "@spt/models/eft/common/tables/IItem"; +import { IItem, IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemTempObject { - itemRef: Item; + itemRef: IItem; count: number; isPreset: boolean; - location?: Location; + location?: IItemLocation; containerId?: string; } diff --git a/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemsDirectRequest.d.ts b/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemsDirectRequest.d.ts index 386359e..a744487 100644 --- a/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemsDirectRequest.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/inventory/IAddItemsDirectRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IAddItemsDirectRequest { /** Item and child mods to add to player inventory */ - itemsWithModsToAdd: Item[][]; + itemsWithModsToAdd: IItem[][]; foundInRaid: boolean; /** Runs after EACH item with children is added */ callback?: (buyCount: number) => void; diff --git a/TypeScript/9RouterHooks/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts index cc7269c..b133bff 100644 --- a/TypeScript/9RouterHooks/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/inventory/IInventoryBaseActionRequestData.d.ts @@ -1,19 +1,13 @@ import { IBaseInteractionRequestData } from "@spt/models/eft/common/request/IBaseInteractionRequestData"; +import { IItemLocation } from "@spt/models/eft/common/tables/IItem"; export interface IInventoryBaseActionRequestData extends IBaseInteractionRequestData { } export interface To { id: string; container: string; - location?: ToLocation | number; + location?: IItemLocation | number; isSearched?: boolean; } -export interface ToLocation { - x: number; - y: number; - r: string; - rotation?: string; - isSearched: boolean; -} export interface Container { id: string; container: string; diff --git a/TypeScript/9RouterHooks/types/models/eft/inventory/IInventorySortRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/inventory/IInventorySortRequestData.d.ts index d784c77..10ee271 100644 --- a/TypeScript/9RouterHooks/types/models/eft/inventory/IInventorySortRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/inventory/IInventorySortRequestData.d.ts @@ -1,20 +1,6 @@ -import { Upd } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IInventoryBaseActionRequestData } from "@spt/models/eft/inventory/IInventoryBaseActionRequestData"; export interface IInventorySortRequestData extends IInventoryBaseActionRequestData { Action: "ApplyInventoryChanges"; - changedItems: ChangedItem[]; -} -export interface ChangedItem { - _id: string; - _tpl: string; - parentId: string; - slotId: string; - location: Location; - upd: Upd; -} -export interface Location { - x: number; - y: number; - r: string; - isSearched: boolean; + changedItems: IItem[]; } diff --git a/TypeScript/9RouterHooks/types/models/eft/itemEvent/IItemEventRouterBase.d.ts b/TypeScript/9RouterHooks/types/models/eft/itemEvent/IItemEventRouterBase.d.ts index 0c48014..9d8a740 100644 --- a/TypeScript/9RouterHooks/types/models/eft/itemEvent/IItemEventRouterBase.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/itemEvent/IItemEventRouterBase.d.ts @@ -1,5 +1,5 @@ -import { Health, IQuestStatus, Productive, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item, Upd } from "@spt/models/eft/common/tables/IItem"; +import { IHealth, IHideoutImprovement, IMoneyTransferLimits, IProductive, IQuestStatus, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem, IItemLocation, IUpd } 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"; @@ -8,59 +8,56 @@ export interface IItemEventRouterBase { warnings: Warning[]; profileChanges: TProfileChanges | ""; } -export type TProfileChanges = Record; +export type TProfileChanges = Record; export interface Warning { index: number; errmsg: string; code?: string; data?: any; } -export interface ProfileChange { +export interface IProfileChange { _id: string; experience: number; quests: IQuest[]; ragFairOffers: IRagfairOffer[]; weaponBuilds: IWeaponBuildChange[]; equipmentBuilds: IEquipmentBuildChange[]; - items: ItemChanges; - production: Record; + items: IItemChanges; + production: Record; /** Hideout area improvement id */ - improvements: Record; - skills: Skills; - health: Health; + improvements: Record; + skills: ISkills; + health: IHealth; traderRelations: Record; + moneyTransferLimitData: IMoneyTransferLimits; repeatableQuests?: IPmcDataRepeatableQuest[]; recipeUnlocked: Record; changedHideoutStashes?: Record; questsStatus: IQuestStatus[]; } export interface IHideoutStashItem { - Id: string; - Tpl: string; + id: string; + tpl: string; } export interface IWeaponBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; } export interface IEquipmentBuildChange { id: string; name: string; root: string; - items: Item[]; + items: IItem[]; type: string; fastpanel: any[]; buildType: EquipmentBuildType; } -export interface ItemChanges { - new: Product[]; - change: Product[]; - del: Product[]; -} -export interface Improvement { - completed: boolean; - improveCompleteTimestamp: number; +export interface IItemChanges { + new: IProduct[]; + change: IProduct[]; + del: IProduct[]; } /** Related to TraderInfo */ export interface TraderData { @@ -70,17 +67,11 @@ export interface TraderData { unlocked: boolean; disabled: boolean; } -export interface Product { +export interface IProduct { _id: string; _tpl?: string; parentId?: string; slotId?: string; - location?: ItemChangeLocation; - upd?: Upd; -} -export interface ItemChangeLocation { - x: number; - y: number; - r: number; - isSearched?: boolean; + location?: IItemLocation; + upd?: IUpd; } diff --git a/TypeScript/9RouterHooks/types/models/eft/launcher/IMiniProfile.d.ts b/TypeScript/9RouterHooks/types/models/eft/launcher/IMiniProfile.d.ts index b25a1e7..0ea2793 100644 --- a/TypeScript/9RouterHooks/types/models/eft/launcher/IMiniProfile.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/launcher/IMiniProfile.d.ts @@ -1,3 +1,4 @@ +import { Spt } from "../profile/ISptProfile"; export interface IMiniProfile { username: string; nickname: string; @@ -7,8 +8,7 @@ export interface IMiniProfile { prevexp: number; nextlvl: number; maxlvl: number; - sptData: SPTData; -} -export interface SPTData { - version: string; + edition: string; + profileId: string; + sptData: Spt; } diff --git a/TypeScript/9RouterHooks/types/models/eft/location/IGetAirdropLootResponse.d.ts b/TypeScript/9RouterHooks/types/models/eft/location/IGetAirdropLootResponse.d.ts new file mode 100644 index 0000000..93950db --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/location/IGetAirdropLootResponse.d.ts @@ -0,0 +1,6 @@ +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +export interface IGetAirdropLootResponse { + icon: AirdropTypeEnum; + container: IItem[]; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/match/IEndLocalRaidRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/match/IEndLocalRaidRequestData.d.ts new file mode 100644 index 0000000..7f37b20 --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/match/IEndLocalRaidRequestData.d.ts @@ -0,0 +1,40 @@ +import { ExitStatus } from "@spt/models/enums/ExitStatis"; +import { IPmcData } from "../common/IPmcData"; +import { IItem } from "../common/tables/IItem"; +export interface IEndLocalRaidRequestData { + /** ID of server player just left */ + serverId: string; + results: IEndRaidResult; + /** Insured items left in raid by player */ + lostInsuredItems: IItem[]; + /** Items sent via traders to player, keyed to service e.g. BTRTransferStash */ + transferItems: Record; + locationTransit: ILocationTransit; +} +export interface IEndRaidResult { + profile: IPmcData; + result: string; + ExitStatus: ExitStatus; + killerId: string; + killerAid: string; + exitName: string; + inSession: boolean; + favorite: boolean; + playTime: number; +} +export interface ILocationTransit { + hash: string; + playersCount: number; + ip: string; + location: string; + profiles: Record; + transitionRaidId: string; + raidMode: string; + side: string; + dayTime: string; +} +export interface ITransitProfile { + _id: string; + keyId: string; + isSolo: boolean; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts index 959986c..ad65e88 100644 --- a/TypeScript/9RouterHooks/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/match/IGetRaidConfigurationRequestData.d.ts @@ -1,6 +1,5 @@ import { IRaidSettings } from "@spt/models/eft/match/IRaidSettings"; export interface IGetRaidConfigurationRequestData extends IRaidSettings { keyId: string; - CanShowGroupPreview: boolean; MaxGroupCount: number; } diff --git a/TypeScript/9RouterHooks/types/models/eft/match/IGroupCharacter.d.ts b/TypeScript/9RouterHooks/types/models/eft/match/IGroupCharacter.d.ts index 013930a..dbb8c87 100644 --- a/TypeScript/9RouterHooks/types/models/eft/match/IGroupCharacter.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/match/IGroupCharacter.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IGroupCharacter { _id: string; @@ -29,7 +29,7 @@ export interface IGroupCharacter { }; Equipment: { Id: string; - Items: Item[]; + Items: IItem[]; }; }; isLeader: boolean; diff --git a/TypeScript/9RouterHooks/types/models/eft/match/IPutMetricsRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/match/IPutMetricsRequestData.d.ts index d9ed214..ab62acf 100644 --- a/TypeScript/9RouterHooks/types/models/eft/match/IPutMetricsRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/match/IPutMetricsRequestData.d.ts @@ -1,10 +1,57 @@ export interface IPutMetricsRequestData { sid: string; settings: any; - SharedSettings: any; - HardwareDescription: any; + SharedSettings: ISharedSettings; + HardwareDescription: IHardwareDescription; Location: string; Metrics: any; - ClientEvents: any; + ClientEvents: IClientEvents; SpikeSamples: any[]; + mode: string; +} +export interface ISharedSettings { + StatedFieldOfView: number; +} +export interface IHardwareDescription { + deviceUniqueIdentifier: string; + systemMemorySize: number; + graphicsDeviceID: number; + graphicsDeviceName: string; + graphicsDeviceType: string; + graphicsDeviceVendor: string; + graphicsDeviceVendorID: number; + graphicsDeviceVersion: string; + graphicsMemorySize: number; + graphicsMultiThreaded: boolean; + graphicsShaderLevel: number; + operatingSystem: string; + processorCount: number; + processorFrequency: number; + processorType: string; + driveType: string; + swapDriveType: string; +} +export interface IClientEvents { + MatchingCompleted: number; + MatchingCompletedReal: number; + LocationLoaded: number; + LocationLoadedReal: number; + GamePrepared: number; + GamePreparedReal: number; + GameCreated: number; + GameCreatedReal: number; + GamePooled: number; + GamePooledReal: number; + GameRunned: number; + GameRunnedReal: number; + GameSpawn: number; + GameSpawnReal: number; + PlayerSpawnEvent: number; + PlayerSpawnEventReal: number; + GameSpawned: number; + GameSpawnedReal: number; + GameStarting: number; + GameStartingReal: number; + GameStarted: number; + GameStartedReal: number; } diff --git a/TypeScript/9RouterHooks/types/models/eft/match/IRaidSettings.d.ts b/TypeScript/9RouterHooks/types/models/eft/match/IRaidSettings.d.ts index 78a0c19..2e4587b 100644 --- a/TypeScript/9RouterHooks/types/models/eft/match/IRaidSettings.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/match/IRaidSettings.d.ts @@ -10,15 +10,18 @@ import { TimeFlowType } from "@spt/models/enums/RaidSettings/TimeAndWeather/Time import { WindSpeed } from "@spt/models/enums/RaidSettings/TimeAndWeather/WindSpeed"; import { SideType } from "@spt/models/enums/SideType"; export interface IRaidSettings { + keyId: string; location: string; + isLocationTransition: boolean; timeVariant: DateTime; - raidMode: RaidMode; metabolismDisabled: boolean; - playersSpawnPlace: PlayersSpawnPlace; timeAndWeatherSettings: TimeAndWeatherSettings; botSettings: BotSettings; wavesSettings: WavesSettings; side: SideType; + raidMode: RaidMode; + playersSpawnPlace: PlayersSpawnPlace; + CanShowGroupPreview: boolean; } export interface TimeAndWeatherSettings { isRandomTime: boolean; diff --git a/TypeScript/9RouterHooks/types/models/eft/match/IStartLocalRaidRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/match/IStartLocalRaidRequestData.d.ts new file mode 100644 index 0000000..d3b1deb --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/match/IStartLocalRaidRequestData.d.ts @@ -0,0 +1,15 @@ +export interface IStartLocalRaidRequestData { + serverId: string; + location: string; + timeVariant: string; + mode: string; + playerSide: string; + isLocationTransition: boolean; + transition: IStartLocalRaidTransition; +} +export interface IStartLocalRaidTransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/match/IStartLocalRaidResponseData.d.ts b/TypeScript/9RouterHooks/types/models/eft/match/IStartLocalRaidResponseData.d.ts new file mode 100644 index 0000000..50b3584 --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/match/IStartLocalRaidResponseData.d.ts @@ -0,0 +1,19 @@ +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IInsuredItem } from "@spt/models/eft/common/tables/IBotBase"; +import { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; +export interface IStartLocalRaidResponseData { + serverId: string; + serverSettings: ILocationServices; + profile: IProfileInsuredItems; + locationLoot: ILocationBase; + transition: ITransition; +} +export interface IProfileInsuredItems { + insuredItems: IInsuredItem[]; +} +export interface ITransition { + isLocationTransition: boolean; + transitionRaidId: string; + transitionCount: number; + visitedLocations: string[]; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts index 5971372..b59fe10 100644 --- a/TypeScript/9RouterHooks/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/player/IPlayerIncrementSkillLevelRequestData.d.ts @@ -1,4 +1,4 @@ -import { Skills } from "@spt/models/eft/common/tables/IBotBase"; +import { ISkills } from "@spt/models/eft/common/tables/IBotBase"; export interface IPlayerIncrementSkillLevelRequestData { _id: string; experience: number; @@ -7,7 +7,7 @@ export interface IPlayerIncrementSkillLevelRequestData { builds: any[]; items: Items; production: Production; - skills: Skills; + skills: ISkills; traderRelations: TraderRelations; } export interface Items { diff --git a/TypeScript/9RouterHooks/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts index 3cb8533..9852ccb 100644 --- a/TypeScript/9RouterHooks/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/presetBuild/IPresetBuildActionRequestData.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IPresetBuildActionRequestData { Action: string; Id: string; /** name of preset given by player */ Name: string; Root: string; - Items: Item[]; + Items: IItem[]; } diff --git a/TypeScript/9RouterHooks/types/models/eft/profile/GetProfileStatusResponseData.d.ts b/TypeScript/9RouterHooks/types/models/eft/profile/GetProfileStatusResponseData.d.ts index 1228c2e..2f3a6a8 100644 --- a/TypeScript/9RouterHooks/types/models/eft/profile/GetProfileStatusResponseData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/profile/GetProfileStatusResponseData.d.ts @@ -1,8 +1,8 @@ -export interface GetProfileStatusResponseData { +export interface IGetProfileStatusResponseData { maxPveCountExceeded: false; - profiles: ProfileData[]; + profiles: IProfileStatusData[]; } -export interface ProfileData { +export interface IProfileStatusData { profileid: string; profileToken: string; status: string; diff --git a/TypeScript/9RouterHooks/types/models/eft/profile/IGetOtherProfileResponse.d.ts b/TypeScript/9RouterHooks/types/models/eft/profile/IGetOtherProfileResponse.d.ts index 7df4eba..0b4683a 100644 --- a/TypeScript/9RouterHooks/types/models/eft/profile/IGetOtherProfileResponse.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/profile/IGetOtherProfileResponse.d.ts @@ -1,14 +1,14 @@ -import { OverallCounters, Skills } from "@spt/models/eft/common/tables/IBotBase"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IOverallCounters, ISkills } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IGetOtherProfileResponse { id: string; aid: number; info: IOtherProfileInfo; customization: IOtherProfileCustomization; - skills: Skills; + skills: ISkills; equipment: IOtherProfileEquipment; achievements: Record; - favoriteItems: string[]; + favoriteItems: IItem[]; pmcStats: IOtherProfileStats; scavStats: IOtherProfileStats; } @@ -29,12 +29,12 @@ export interface IOtherProfileCustomization { } export interface IOtherProfileEquipment { Id: string; - Items: Item[]; + Items: IItem[]; } export interface IOtherProfileStats { eft: IOtherProfileSubStats; } export interface IOtherProfileSubStats { totalInGameTime: number; - overAllCounters: OverallCounters; + overAllCounters: IOverallCounters; } diff --git a/TypeScript/9RouterHooks/types/models/eft/profile/ISptProfile.d.ts b/TypeScript/9RouterHooks/types/models/eft/profile/ISptProfile.d.ts index dd7aea6..cc3be39 100644 --- a/TypeScript/9RouterHooks/types/models/eft/profile/ISptProfile.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/profile/ISptProfile.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -50,11 +50,11 @@ export interface IUserBuild { } export interface IWeaponBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; } export interface IEquipmentBuild extends IUserBuild { Root: string; - Items: Item[]; + Items: IItem[]; BuildType: EquipmentBuildType; } export interface IMagazineBuild extends IUserBuild { @@ -69,7 +69,7 @@ export interface IMagazineTemplateAmmoItem { } /** Used by defaultEquipmentPresets.json */ export interface IDefaultEquipmentPreset extends IUserBuild { - Items: Item[]; + Items: IItem[]; Root: string; BuildType: EquipmentBuildType; type: string; @@ -138,7 +138,7 @@ export interface MessagePreview { } export interface MessageItems { stash?: string; - data?: Item[]; + data?: IItem[]; } export interface ISystemData { date?: string; @@ -166,11 +166,13 @@ export interface Spt { /** What mods has this profile loaded at any point in time */ mods?: ModDetails[]; /** What gifts has this profile received and how many */ - receivedGifts: ReceivedGift[]; + receivedGifts?: ReceivedGift[]; /** item TPLs blacklisted from being sold on flea for this profile */ blacklistedItemTpls?: string[]; /** key: daily type */ - freeRepeatableRefreshUsedCount: Record; + freeRepeatableRefreshUsedCount?: Record; + /** When was a profile migrated, value is timestamp */ + migrations?: Record; } export interface ModDetails { name: string; @@ -235,7 +237,7 @@ export interface Insurance { systemData: ISystemData; messageType: MessageType; messageTemplateId: string; - items: Item[]; + items: IItem[]; } export interface MessageContentRagfair { offerId: string; diff --git a/TypeScript/9RouterHooks/types/models/eft/quests/IHandoverQuestRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/quests/IHandoverQuestRequestData.d.ts index 63f10a8..39604d5 100644 --- a/TypeScript/9RouterHooks/types/models/eft/quests/IHandoverQuestRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/quests/IHandoverQuestRequestData.d.ts @@ -2,9 +2,9 @@ export interface IHandoverQuestRequestData { Action: "QuestHandover"; qid: string; conditionId: string; - items: Item[]; + items: IHandoverItem[]; } -export interface Item { +export interface IHandoverItem { id: string; count: number; } diff --git a/TypeScript/9RouterHooks/types/models/eft/ragfair/IRagfairOffer.d.ts b/TypeScript/9RouterHooks/types/models/eft/ragfair/IRagfairOffer.d.ts index f6c07fc..b6b1ed8 100644 --- a/TypeScript/9RouterHooks/types/models/eft/ragfair/IRagfairOffer.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/ragfair/IRagfairOffer.d.ts @@ -1,10 +1,10 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { DogtagExchangeSide } from "@spt/models/enums/DogtagExchangeSide"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; export interface IRagfairOffer { - sellResult?: SellResult[]; + sellResult?: ISellResult[]; _id: string; - items: Item[]; + items: IItem[]; requirements: OfferRequirement[]; root: string; intId: number; @@ -42,7 +42,7 @@ export interface IRagfairOfferUser { isRatingGrowing?: boolean; aid?: number; } -export interface SellResult { +export interface ISellResult { sellTime: number; amount: number; } diff --git a/TypeScript/9RouterHooks/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts index d64b2c9..d72a131 100644 --- a/TypeScript/9RouterHooks/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/trade/IProcessBuyTradeRequestData.d.ts @@ -6,9 +6,9 @@ export interface IProcessBuyTradeRequestData extends IProcessBaseTradeRequestDat item_id: string; count: number; scheme_id: number; - scheme_items: SchemeItem[]; + scheme_items: ISchemeItem[]; } -export interface SchemeItem { +export interface ISchemeItem { /** Id of stack to take money from, is money tpl when Action is `SptInsure` */ id: string; count: number; diff --git a/TypeScript/9RouterHooks/types/models/eft/trade/IProcessSellTradeRequestData.d.ts b/TypeScript/9RouterHooks/types/models/eft/trade/IProcessSellTradeRequestData.d.ts index 459bd28..b345c3e 100644 --- a/TypeScript/9RouterHooks/types/models/eft/trade/IProcessSellTradeRequestData.d.ts +++ b/TypeScript/9RouterHooks/types/models/eft/trade/IProcessSellTradeRequestData.d.ts @@ -4,9 +4,9 @@ export interface IProcessSellTradeRequestData extends IProcessBaseTradeRequestDa type: string; tid: string; price: number; - items: Item[]; + items: ISoldItem[]; } -export interface Item { +export interface ISoldItem { id: string; count: number; scheme_id: number; diff --git a/TypeScript/9RouterHooks/types/models/eft/wishlist/IAddToWishlistRequest.d.ts b/TypeScript/9RouterHooks/types/models/eft/wishlist/IAddToWishlistRequest.d.ts new file mode 100644 index 0000000..656f77b --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/wishlist/IAddToWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IAddToWishlistRequest { + Action: string; + items: Record; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts b/TypeScript/9RouterHooks/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts new file mode 100644 index 0000000..7ce88e0 --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/wishlist/IChangeWishlistItemCategoryRequest.d.ts @@ -0,0 +1,5 @@ +export interface IChangeWishlistItemCategoryRequest { + Action: string; + item: string; + category: number; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts b/TypeScript/9RouterHooks/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts new file mode 100644 index 0000000..6a13b1f --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/eft/wishlist/IRemoveFromWishlistRequest.d.ts @@ -0,0 +1,4 @@ +export interface IRemoveFromWishlistRequest { + Action: string; + items: string[]; +} diff --git a/TypeScript/9RouterHooks/types/models/eft/wishlist/IWishlistActionData.d.ts b/TypeScript/9RouterHooks/types/models/eft/wishlist/IWishlistActionData.d.ts deleted file mode 100644 index 9217864..0000000 --- a/TypeScript/9RouterHooks/types/models/eft/wishlist/IWishlistActionData.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IWishlistActionData { - Action: string; - templateId: string; -} diff --git a/TypeScript/9RouterHooks/types/models/enums/AirdropType.d.ts b/TypeScript/9RouterHooks/types/models/enums/AirdropType.d.ts index a6f6e3a..2c21ead 100644 --- a/TypeScript/9RouterHooks/types/models/enums/AirdropType.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/AirdropType.d.ts @@ -1,6 +1,6 @@ export declare enum AirdropTypeEnum { - MIXED = "mixed", - WEAPONARMOR = "weaponarmor", - FOODMEDICAL = "foodmedical", - BARTER = "barter" + COMMON = "mixed", + SUPPLY = "barter", + FOOD_MEDICAL = "foodMedical", + WEAPON_ARMOR = "weaponArmor" } diff --git a/TypeScript/9RouterHooks/types/models/enums/BaseClasses.d.ts b/TypeScript/9RouterHooks/types/models/enums/BaseClasses.d.ts index 32ebf7c..65fc95e 100644 --- a/TypeScript/9RouterHooks/types/models/enums/BaseClasses.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/BaseClasses.d.ts @@ -107,6 +107,6 @@ export declare enum BaseClasses { RECEIVER = "55818a304bdc2db5418b457d", BARREL = "555ef6e44bdc2de9068b457e", CHARGING_HANDLE = "55818a6f4bdc2db9688b456b", - COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569", + COMB_MUZZLE_DEVICE = "550aa4dd4bdc2dc9348b4569 ", HIDEOUT_AREA_CONTAINER = "63da6da4784a55176c018dba" } diff --git a/TypeScript/9RouterHooks/types/models/enums/ConfigTypes.d.ts b/TypeScript/9RouterHooks/types/models/enums/ConfigTypes.d.ts index 646fd55..2c4483a 100644 --- a/TypeScript/9RouterHooks/types/models/enums/ConfigTypes.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/ConfigTypes.d.ts @@ -24,6 +24,5 @@ export declare enum ConfigTypes { WEATHER = "spt-weather", SEASONAL_EVENT = "spt-seasonalevents", LOST_ON_DEATH = "spt-lostondeath", - GIFTS = "spt-gifts", - BTR = "spt-btr" + GIFTS = "spt-gifts" } diff --git a/TypeScript/9RouterHooks/types/models/enums/HideoutAreas.d.ts b/TypeScript/9RouterHooks/types/models/enums/HideoutAreas.d.ts index 1af487a..6211f26 100644 --- a/TypeScript/9RouterHooks/types/models/enums/HideoutAreas.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/HideoutAreas.d.ts @@ -25,5 +25,7 @@ export declare enum HideoutAreas { EMERGENCY_WALL = 22, GYM = 23, WEAPON_STAND = 24, - WEAPON_STAND_SECONDARY = 25 + WEAPON_STAND_SECONDARY = 25, + EQUIPMENT_PRESETS_STAND = 26, + CIRCLE_OF_CULTISTS = 27 } diff --git a/TypeScript/9RouterHooks/types/models/enums/HideoutEventActions.d.ts b/TypeScript/9RouterHooks/types/models/enums/HideoutEventActions.d.ts index 556c799..a495db9 100644 --- a/TypeScript/9RouterHooks/types/models/enums/HideoutEventActions.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/HideoutEventActions.d.ts @@ -10,5 +10,7 @@ export declare enum HideoutEventActions { HIDEOUT_TAKE_PRODUCTION = "HideoutTakeProduction", HIDEOUT_RECORD_SHOOTING_RANGE_POINTS = "RecordShootingRangePoints", HIDEOUT_IMPROVE_AREA = "HideoutImproveArea", - HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand" + HIDEOUT_CANCEL_PRODUCTION_COMMAND = "HideoutCancelProductionCommand", + HIDEOUT_CIRCLE_OF_CULTIST_PRODUCTION_START = "HideoutCircleOfCultistProductionStart", + HIDEOUT_DELETE_PRODUCTION_COMMAND = "HideoutDeleteProductionCommand" } diff --git a/TypeScript/9RouterHooks/types/models/enums/ItemTpl.d.ts b/TypeScript/9RouterHooks/types/models/enums/ItemTpl.d.ts index 8512ea8..46502ac 100644 --- a/TypeScript/9RouterHooks/types/models/enums/ItemTpl.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/ItemTpl.d.ts @@ -37,8 +37,8 @@ export declare enum ItemTpl { 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_HYDRASHOK_50RND = "65702406bfc87b3a34093216", + AMMOBOX_45ACP_LASERMATCH_50RND = "6570240a1419851aef03e6f7", AMMOBOX_45ACP_RIP_50RND = "65702414c5d7d4cb4d078555", AMMOBOX_46X30_ACTION_SX_40RND = "657024c81419851aef03e712", AMMOBOX_46X30_AP_SX_40RND = "6489870774a806211e4fb685", @@ -204,6 +204,10 @@ export declare enum ItemTpl { AMMOBOX_9X39_SPP_8RND = "5c12619186f7743f871c8a32", AMMO_127X108_B32 = "5cde8864d7f00c0010373be1", AMMO_127X108_BZT44M = "5d2f2ab648f03550091993ca", + AMMO_127X33_COPPER = "66a0d1e0ed648d72fe064d06", + AMMO_127X33_FMJ = "668fe62ac62660a5d8071446", + AMMO_127X33_HAWK_JSP = "66a0d1f88486c69fce00fdf6", + AMMO_127X33_JHP = "66a0d1c87d0d369e270bb9de", AMMO_127X55_PS12 = "5cadf6ddae9215051e1c23b2", AMMO_127X55_PS12A = "5cadf6e5ae921500113bb973", AMMO_127X55_PS12B = "5cadf6eeae921500134b2799", @@ -237,12 +241,14 @@ export declare enum ItemTpl { AMMO_23X75_SHRAP10 = "5e85a9a6eacf8c039e4e2ac1", AMMO_23X75_SHRAP25 = "5f647f31b6238e5dd066e196", AMMO_23X75_ZVEZDA = "5e85a9f4add9fe03027d9bf1", + AMMO_26X75_AC = "635267f063651329f75a4ee8", AMMO_26X75_FLARE = "62389bc9423ed1685422dc57", AMMO_26X75_GREEN = "62389aaba63f32501b1b444f", AMMO_26X75_RED = "62389ba9a63f32501b1b4451", - AMMO_26X75_SIGNAL = "635267f063651329f75a4ee8", + AMMO_26X75_SIGNAL_FLARE_BLUE = "66d97834d2985e11480d5c1e", AMMO_26X75_SIGNAL_FLARE_GREEN = "624c0570c9b794431568f5d5", AMMO_26X75_SIGNAL_FLARE_RED = "624c09cfbc2e27219346d955", + AMMO_26X75_SIGNAL_FLARE_SPECIAL_YELLOW = "66d9f3047b82b9a9aa055d81", AMMO_26X75_SIGNAL_FLARE_WHITE = "624c09da2cec124eb67c1046", AMMO_26X75_SIGNAL_FLARE_YELLOW = "624c09e49b98e019a3315b66", AMMO_26X75_YELLOW = "62389be94d5d474bf712e709", @@ -510,6 +516,7 @@ export declare enum ItemTpl { ASSAULTCARBINE_KBP_VSK94_9X39_RIFLE = "645e0c6b3b381ede770e1cc9", ASSAULTCARBINE_MOLOT_ARMS_SIMONOV_OPSKS_762X39_CARBINE = "587e02ff24597743df3deaeb", ASSAULTCARBINE_MOLOT_ARMS_VPO101_VEPRHUNTER_762X51_CARBINE = "5c501a4d2e221602b412b540", + ASSAULTCARBINE_SR3M_9X39_COMPACT_ASSAULT_RIFLE = "651450ce0e00edc794068371", ASSAULTCARBINE_TOKAREV_AVT40_762X54R_AUTOMATIC_RIFLE = "6410733d5dd49d77bd07847e", ASSAULTCARBINE_TOKAREV_SVT40_762X54R_RIFLE = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_TOZ_SIMONOV_SKS_762X39_CARBINE = "574d967124597745970e7c94", @@ -551,8 +558,8 @@ export declare enum ItemTpl { ASSAULTRIFLE_RIFLE_DYNAMICS_RD704_762X39_ASSAULT_RIFLE = "628a60ae6b1d481ff772e9c8", ASSAULTRIFLE_SAG_AK545_545X39_CARBINE = "628b5638ad252a16da6dd245", ASSAULTRIFLE_SAG_AK545_SHORT_545X39_CARBINE = "628b9c37a733087d0d7fe84b", + ASSAULTRIFLE_SIG_MCXSPEAR_68X51_ASSAULT_RIFLE = "65290f395ae2ae97b80fdf2d", 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", @@ -615,6 +622,7 @@ export declare enum ItemTpl { 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_CAMELBAK_TRIZIP_ASSAULT_BACKPACK_MULTICAM = "66b5f22b78bbc0200425f904", BACKPACK_DIRECT_ACTION_DRAGON_EGG_MARK_II_BACKPACK_BLACK = "656f198fb27298d6fd005466", BACKPACK_DUFFLE_BAG = "56e33634d2720bd8058b456b", BACKPACK_EBERLESTOCK_F4_TERMINATOR_LOAD_BEARING_BACKPACK_TIGER_STRIPE = "5f5e46b96bdad616ad46d613", @@ -636,7 +644,9 @@ export declare enum ItemTpl { 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_MYSTERY_RANCH_TERRAPLANE = "56e294cdd2720b603a8b4575", BACKPACK_OAKLEY_MECHANISM_HEAVY_DUTY_BACKPACK_BLACK = "5d5d940f86f7742797262046", + BACKPACK_PARTISANS_BAG = "66a9f98f3bd5a41b162030f4", BACKPACK_PILGRIM_TOURIST = "59e763f286f7742ee57895da", BACKPACK_SANITARS_BAG = "5e997f0b86f7741ac73993e2", BACKPACK_SANTAS_BAG = "61b9e1aaef9a1b5d6a79899a", @@ -646,6 +656,7 @@ export declare enum ItemTpl { BACKPACK_TASMANIAN_TIGER_TROOPER_35_BACKPACK_KHAKI = "639346cc1c8f182ad90c8972", BACKPACK_TEHINKOM_RKPT25_PATROL_BACKPACK_DIGITAL_FLORA = "656ddcf0f02d7bcea90bf395", BACKPACK_TRANSFORMER_BAG = "56e33680d2720be2748b4576", + BACKPACK_VERTX_READY_PACK_BACKPACK_RED = "66b5f247af44ca0014063c02", BACKPACK_VKBO_ARMY_BAG = "5ab8ee7786f7742d8f33f0b9", BACKPACK_WARTECH_BERKUT_BB102_BACKPACK_ATACS_FG = "5ca20d5986f774331e7c9602", BARREL_9A91_9X39 = "645122f6d4928d46d30be3ff", @@ -660,6 +671,11 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_L5_357_127MM = "669fa4c61bd4416eaa09b3ca", + BARREL_DESERT_EAGLE_L5_50_AE_127MM = "669fa4ba1bd4416eaa09b3c6", + BARREL_DESERT_EAGLE_L6_50_AE_152MM = "669fa47da0bab4e8510d9526", + BARREL_DESERT_EAGLE_L6_50_AE_152MM_BARREL_WTS = "669fa48fa0bab4e8510d952a", + BARREL_DESERT_EAGLE_MK_XIX_50_AE_152MM = "668fe5f62a0f85eea407cc18", BARREL_DVL10_762X51_500MM = "5888945a2459774bf43ba385", BARREL_DVL10_M2_762X51_660MM = "5888956924597752983e182d", BARREL_FN_FIVESEVEN_57X28 = "5d3eb5b6a4b9361eab311902", @@ -706,6 +722,10 @@ export declare enum ItemTpl { BARREL_M1911A1_45_ACP_THREADED = "5f3e77f59103d430b93f94c1", BARREL_M1A_762X51_16_INCH = "5aaf9d53e5b5b00015042a52", BARREL_M1A_762X51_22_INCH = "5addbac75acfc400194dbc56", + BARREL_M60E3_762X51_584MM = "6601279cc752a02bbe05e692", + BARREL_M60E4_762X51_458MM = "660126f7c752a02bbe05e688", + BARREL_M60E4_762X51_475MM_HEAVY = "66012788c752a02bbe05e68e", + BARREL_M60E6_762X51_458MM = "66225d88a1c7e3b81600c76f", BARREL_M700_762X51_20_INCH_STAINLESS_STEEL_THREADED = "5d2703038abbc3105103d94c", BARREL_M700_762X51_20_INCH_THREADED = "5bfebc320db8340019668d79", BARREL_M700_762X51_26_INCH = "5bfebc250db834001a6694e1", @@ -716,9 +736,9 @@ export declare enum ItemTpl { BARREL_M870_12GA_660MM_VENT_RIB = "5a787fadc5856700155a6ca1", BARREL_M870_12GA_SAWEDOFF_325MM = "5a787fdfc5856700142fdd9a", BARREL_M9A3_9X19_THREADED = "5cadc1c6ae9215000f2775a4", + BARREL_MCXSPEAR_68X51_330MM = "652910565ae2ae97b80fdf35", 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", @@ -790,7 +810,15 @@ export declare enum ItemTpl { 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_UZI_238MM_THREADED_3LUG = "6698c89bfbc8142e60024b0e", + BARREL_UZI_9X19_259MM = "6698c8ab29e062525d0ad8ab", + BARREL_UZI_9X19_409MM = "6698c8b7710a4525fe0e9e55", + BARREL_UZI_PRO_9X19_114MM = "66866fe776d1a87cd80fd388", + BARREL_UZI_PRO_9X19_170MM = "6686700a2b934a68630a7fe6", + BARREL_UZI_PRO_9X19_210MM = "66867023c3d473265104f384", + BARREL_UZI_PRO_9X19_240MM = "668670432b934a68630a7fe8", + BARREL_UZI_PRO_9X19_PIKE_ARMS_114MM_THREADED = "668031705014e211b4078046", + BARREL_VPO21502_366TKM_600MM = "5de65547883dde217541644b", BARREL_VSK94_9X39 = "645123013d52156624001fd1", BARTER_42_SIGNATURE_BLEND_ENGLISH_TEA = "5bc9be8fd4351e00334cae6e", BARTER_6STEN140M_MILITARY_BATTERY = "5d03794386f77420415576f5", @@ -868,6 +896,7 @@ export declare enum ItemTpl { BARTER_FLEECE_FABRIC = "5e2af47786f7746d404f3aaa", BARTER_FP100_FILTER_ABSORBER = "5d1b2f3f86f774252167a52c", BARTER_FUEL_CONDITIONER = "5b43575a86f77424f443fe62", + BARTER_GARY_ZONT_PORTABLE_ELECTRONIC_WARFARE_DEVICE = "66d9f8744827a77e870ecaf1", BARTER_GAS_ANALYZER = "590a3efd86f77437d351a25b", BARTER_GAS_MASK_AIR_FILTER = "590c595c86f7747884343ad7", BARTER_GEIGERMULLER_COUNTER = "5672cb724bdc2dc2088b456b", @@ -884,25 +913,27 @@ export declare enum ItemTpl { BARTER_HAND_DRILL = "5d1b317c86f7742523398392", BARTER_HORSE_FIGURINE = "573478bc24597738002c6175", BARTER_HUNTING_MATCHES = "5e2af2bc86f7746d3f3c33fc", + BARTER_INSEQ_GAS_PIPE_WRENCH = "66b37f114410565a8f6789e2", BARTER_INSULATING_TAPE = "5734795124597738002c6176", BARTER_IRIDIUM_MILITARY_THERMAL_VISION_MODULE = "5d0377ce86f774186372f689", BARTER_KEKTAPE_DUCT_TAPE = "5e2af29386f7746d4159f077", BARTER_KILLA_FIGURINE = "66572c82ad599021091c6118", + BARTER_KOSA_UAV_ELECTRONIC_JAMMING_DEVICE = "66d9f7e7099cf6adcc07a369", 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_LOCKED_EQUIPMENT_CRATE_COMMON = "66588b514de4820934746dc6", + BARTER_LOCKED_EQUIPMENT_CRATE_EPIC = "6658285190486915542256c4", + BARTER_LOCKED_EQUIPMENT_CRATE_RARE = "66571bf06a723f7f005a0619", + BARTER_LOCKED_SUPPLY_CRATE_COMMON = "66588ba291f6e93c4c06efef", + BARTER_LOCKED_SUPPLY_CRATE_EPIC = "665828c44de4820934746ce4", + BARTER_LOCKED_SUPPLY_CRATE_RARE = "66572b88ac60f009f270d1dc", + BARTER_LOCKED_VALUABLES_CRATE_COMMON = "66588bb047fbd536a674240e", + BARTER_LOCKED_VALUABLES_CRATE_EPIC = "665828f490486915542256c6", + BARTER_LOCKED_VALUABLES_CRATE_RARE = "66572bb3ac60f009f270d1df", + BARTER_LOCKED_WEAPON_CRATE_COMMON = "66588b6dcb48a73e674b2649", + BARTER_LOCKED_WEAPON_CRATE_EPIC = "66582889efd94e2d665b14a2", + BARTER_LOCKED_WEAPON_CRATE_RARE = "66572b3f6a723f7f005a066c", BARTER_LOOT_LORD_PLUSHIE = "60b0f7057897d47c5b04ab94", BARTER_LVNDMARKS_RAT_POISON = "60b0f561c4449e4cb624c1d7", BARTER_MAGNET = "590a391c86f774385a33c404", @@ -953,8 +984,9 @@ export declare enum ItemTpl { BARTER_PRINTED_CIRCUIT_BOARD = "590a3b0486f7743954552bdb", BARTER_PRINTER_PAPER = "577e1c9d2459773cd707c525", BARTER_PROPANE_TANK_5L = "59fafb5d86f774067a6f2084", + BARTER_RADAR_STATION_SPARE_PARTS = "66d9f7256916142b3b02276e", BARTER_RADIATOR_HELIX = "5d1c774f86f7746d6620f8db", - BARTER_RAM = "57347baf24597738002c6178", + BARTER_RAM_STICK = "57347baf24597738002c6178", BARTER_RATCHET_WRENCH = "60391afc25aff57af81f7085", BARTER_RAVEN_FIGURINE = "5e54f62086f774219b0f1937", BARTER_RECHARGEABLE_BATTERY = "590a358486f77429692b2790", @@ -979,6 +1011,7 @@ export declare enum ItemTpl { BARTER_STRIKE_CIGARETTES = "5734770f24597738025ee254", BARTER_SURVL_SURVIVOR_LIGHTER = "5e2af37686f774755a234b65", BARTER_TAGILLA_FIGURINE = "66572cbdad599021091c611a", + BARTER_TAMATTHI_KUNAI_KNIFE_REPLICA = "66b37ea4c5d72b0277488439", BARTER_TETRIZ_PORTABLE_GAME_CONSOLE = "5c12620d86f7743f8b198b72", BARTER_TOILET_PAPER = "5c13cef886f774072e618e82", BARTER_TOOLSET = "590c2e1186f77425357b6124", @@ -993,6 +1026,7 @@ export declare enum ItemTpl { BARTER_USEC_OPERATIVE_FIGURINE = "655c663a6689c676ce57af85", BARTER_UZRGM_GRENADE_FUZE = "5e2af51086f7746d3f3c3402", BARTER_VERITAS_GUITAR_PICK = "5f745ee30acaeb0d490d8c5b", + BARTER_VIIBIIN_SNEAKER = "66b37eb4acff495a29492407", BARTER_VIRTEX_PROGRAMMABLE_PROCESSOR = "5c05308086f7746b2101e90b", BARTER_VPX_FLASH_STORAGE_MODULE = "5c05300686f7746dce784e5d", BARTER_WATER_FILTER = "5d1b385e86f774252167b98a", @@ -1005,8 +1039,11 @@ export declare enum ItemTpl { BARTER_WRENCH = "590c311186f77424d1667482", BARTER_XENOMORPH_SEALING_FOAM = "590c346786f77423e50ed342", BARTER_ZIBBO_LIGHTER = "56742c2e4bdc2d95058b456d", + BIPOD_ALL_TEST = "665745c8a3c672c7b00bb355", + BIPOD_BT10_V8_ATLAS = "6644920d49817dc7d505ca71", BIPOD_HARRIS_HBR = "5888961624597754281f93f3", BIPOD_HK_G36 = "622b397c9a3d4327e41843b6", + BIPOD_M60 = "66012d9a3dff5074ed002e33", BIPOD_PK = "6464d870bb2c580352070cc4", BIPOD_RPD = "6513f037e06849f06c0957d7", BIPOD_SV98 = "56ea8222d2720b69698b4567", @@ -1058,8 +1095,8 @@ export declare enum ItemTpl { 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_ADEPT_NEOSTEEL_LEVEL4_HELMET_ARMOR_NAPE = "657f9ef6c6679fefb3051e1f", + BUILTININSERTS_ADEPT_NEOSTEEL_LEVEL4_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", @@ -1085,6 +1122,8 @@ export declare enum ItemTpl { BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_FRONT = "657322988c1cc6dcd9098b2d", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "657322acd9d89ff7ac0d961b", BUILTININSERTS_BAGARII_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "657322b7d9d89ff7ac0d961f", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_NAPE = "66b61ce0c5d72b027748867e", + BUILTININSERTS_BALLISTICARMORCO_BASTION_LEVEL4_HELMET_ARMOR_TOP = "66b61cfae98be930d701c029", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_BACK = "6573102b292ecadbfa09b38d", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_FRONT = "6573101e292ecadbfa09b389", BUILTININSERTS_BANSHEE_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "65731038292ecadbfa09b391", @@ -1264,11 +1303,16 @@ export declare enum ItemTpl { 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_RONIN_LEVEL3_HELMET_ARMOR_EARS = "66bdc2c90b603c26902b2018", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_EYES = "66bdc2d051aa8c345646d03f", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_JAW = "66bdc2d9408f1e66eb4fd957", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_NAPE = "66bdc2e25f17154509115d1e", + BUILTININSERTS_RONIN_LEVEL3_HELMET_ARMOR_TOP = "66bdc2ea8cbd597c9c2f9360", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EARS = "65711b706d197c216005b31c", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_EYES = "65711b9b65daf6aa960c9b1b", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_JAW = "65711bc79eb8c145180dbba1", + BUILTININSERTS_RONIN_LEVEL4_HELMET_ARMOR_NAPE = "65711b489eb8c145180dbb9d", + BUILTININSERTS_RONIN_LEVEL4_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", @@ -1283,6 +1327,15 @@ export declare enum ItemTpl { BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_EARS = "657119fea330b8c9060f7afc", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_NAPE = "657119d49eb8c145180dbb95", BUILTININSERTS_SSH68_LEVEL3_HELMET_ARMOR_TOP = "6571199565daf6aa960c9b10", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_BACK = "66b884eaacff495a29492849", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_FRONT = "66b884f4c5d72b02774886eb", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "66b884fd7994640992013b37", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_LEFT_SIDE = "66b8851678bbc0200425fa03", + BUILTININSERTS_STICHPROFI_PCV2_LEVEL2_SOFT_ARMOR_RIGHT_SIDE = "66b88521a7f72d197e70be3b", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_BACK = "66b8b20c5891c84aab75cb96", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_FRONT = "66b8b217c5d72b02774887b4", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_LEFT_SIDE = "66b8b223a7f72d197e70bed3", + BUILTININSERTS_STICH_DEFENSE_M2_LEVEL3_SOFT_ARMOR_RIGHT_SIDE = "66b8b22b78bbc0200425fb20", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_BACK = "6572eb1b04ee6483ef039882", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_FRONT = "6572eb0e55beba16bc04079f", BUILTININSERTS_STRANDHOGG_LEVEL2_SOFT_ARMOR_GROIN_FRONT = "6572eb865b5eac12f10a03ee", @@ -1345,8 +1398,8 @@ export declare enum ItemTpl { 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_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_FDE = "5b2240bf5acfc40dc528af69", + CHARGE_AR15_RADIAN_WEAPONS_RAPTOR_CHARGING_HANDLE_TUNGSTEN_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", @@ -1355,8 +1408,8 @@ export declare enum ItemTpl { CHARGE_HK417_E1_EXTENDED_CHARGING_HANDLE = "61702d8a67085e45ef140b24", CHARGE_HK_MP5K_COCKING_HANDLE = "5d2f2d5748f03572ec0c0139", CHARGE_HK_MP5_COCKING_HANDLE = "5926c32286f774616e42de99", + CHARGE_MCXSPEAR_CHARGING_HANDLE = "6529109524cbe3c74a05e5b7", 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", @@ -1380,6 +1433,7 @@ export declare enum ItemTpl { COLLIMATOR_FN_P90_RING_SIGHT_REFLEX_SIGHT = "5cebec38d7f00c00110a652a", COLLIMATOR_HENSOLDT_RV_RED_DOT_SIGHT = "622efbcb99f4ea1a4d6c9a15", COLLIMATOR_HOLOSUN_HS401G5_REFLEX_SIGHT = "5b30b0dc5acfc400153b7124", + COLLIMATOR_KOMZ_RUSAK_REFLEX_SIGHT = "65f05b9d39dab9e9ec049cfd", COLLIMATOR_LEAPERS_UTG_REFLEX_SIGHT = "6165ac8c290d254f5e6b2f6c", COLLIMATOR_MILKOR_M2A1_GRENADE_LAUNCHER_REFLEX_SIGHT = "6284bd5f95250a29bc628a30", COLLIMATOR_NPZ_PK1_OBZOR_DOVETAIL_REFLEX_SIGHT = "618a5d5852ecee1505530b2a", @@ -1421,6 +1475,7 @@ export declare enum ItemTpl { CONTAINER_MR_HOLODILNICK_THERMAL_BAG = "5c093db286f7740a1b2617e3", CONTAINER_SICC = "5d235bb686f77443f4331278", CONTAINER_SIMPLE_WALLET = "5783c43d2459774bbe137486", + CONTAINER_STREAMER_ITEM_CASE = "66bc98a01a47be227a5e956e", CONTAINER_THICC_ITEM_CASE = "5c0a840b86f7742ffa4f2482", CONTAINER_THICC_WEAPON_CASE = "5b6d9ce188a4501afc1b2b25", CONTAINER_WEAPON_CASE = "59fb023c86f7746d0d4b423c", @@ -1429,7 +1484,7 @@ export declare enum ItemTpl { 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_NORVINSKY_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", @@ -1495,26 +1550,28 @@ export declare enum ItemTpl { FACECOVER_VENGEFUL_ZRYACHIYS_BALACLAVA = "6530e8587cbfc1e309011e37", FACECOVER_ZRYACHIYS_BALACLAVA = "63626d904aa74b8fe30ab426", FLARE_ROP30_REACTIVE_FLARE_CARTRIDGE_WHITE = "62178be9d0050232da3485d9", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_BLUE = "66d98233302686954b0c6f81", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_GREEN = "6217726288ed9f0845317459", FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_RED = "62178c4d4ecf221597654e3d", + FLARE_RSP30_REACTIVE_SIGNAL_CARTRIDGE_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", 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_AK102_556X45_MUZZLE_BRAKECOMPENSATOR = "5ac72e725acfc400180ae701", FLASHHIDER_AK103_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e7d5acfc40016339a02", - FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR_6P46_020 = "5ac72e895acfc43b321d4bd5", - FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR_6P44_020 = "5ac72e945acfc43f3b691116", + FLASHHIDER_AK104_762X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e895acfc43b321d4bd5", + FLASHHIDER_AK105_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac72e945acfc43f3b691116", FLASHHIDER_AK12_545X39_MUZZLE_BRAKE = "649ec2af961514b22506b10f", - FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5ac7655e5acfc40016339a19", - FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR_6P20_020 = "5649aa744bdc2ded0b8b457e", + FLASHHIDER_AK74M_545X39_MUZZLE_BRAKECOMPENSATOR = "5ac7655e5acfc40016339a19", + FLASHHIDER_AK74_545X39_MUZZLE_BRAKECOMPENSATOR = "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_AKS74U_545X39_MUZZLE_BRAKE = "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", @@ -1527,6 +1584,7 @@ export declare enum ItemTpl { 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_DELTATEK_DTKAR10_762X51_MUZZLE_BRAKE = "6642f63667f5cb56a00662eb", 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", @@ -1547,6 +1605,8 @@ export declare enum ItemTpl { 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_DELTATEK_DTKM16_556X45_MUZZLE_BRAKE = "664301213dd83ddae20dda18", + FLASHHIDER_AR15_DOUBLESTAR_CARLSON_TAC_COMP_556X45_COMPENSATOR = "6621455e3aceea9e2b0b01e7", 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", @@ -1601,7 +1661,9 @@ export declare enum ItemTpl { 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_M60E3_762X51_FLASH_HIDER = "6601281fc752a02bbe05e696", + FLASHHIDER_M60E6_762X51_FLASH_HIDER = "66012a1d3dff5074ed002e2a", + FLASHHIDER_MCXSPEAR_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", @@ -1630,8 +1692,9 @@ export declare enum ItemTpl { 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_TACCOM_CARBINE_BRAKE_9X19_MUZZLE_BRAKE = "5cf6935bd7f00c06585fb791", FLASHHIDER_TT_PMLASER_DTKTT_MUZZLE_BRAKECOMPENSATOR = "5bffd7ed0db834001d23ebf9", + FLASHHIDER_UZI_VENTED_BARREL_SHROUD = "6699370c57df3e2b4e0a0dab", FLASHHIDER_VPO136_VEPRKM_762X39_MUZZLE_BRAKECOMPENSATOR = "59e61eb386f77440d64f5daf", FLASHHIDER_VPO209_THREAD_PROTECTOR = "59e8a00d86f7742ad93b569c", FLASHHIDER_YANKEE_HILL_ANNIHILATOR_MULTICALIBER_FLASH_HIDER = "5b3a16655acfc40016387a2a", @@ -1663,6 +1726,8 @@ export declare enum ItemTpl { 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_MLOK_FOREGRIP_BLACK = "665d5d9e338229cfd6078da1", + FOREGRIP_BCM_GUNFIGHTER_MOD_3_MLOK_FOREGRIP_FDE = "665edce564fb556f940ab32a", 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", @@ -1689,15 +1754,21 @@ export declare enum ItemTpl { FOREGRIP_RTM_PILLAU_TACTICAL = "5cf4fb76d7f00c065703d3ac", FOREGRIP_RTM_PILLAU_TACTICAL_FOREGRIP_SAND = "648067db042be0705c0b3009", FOREGRIP_SIG_SAUER_VERTICAL_FOREGRIP_KEYMOD_BLACK = "5fc0f9cbd6fa9c00c571bb90", + FOREGRIP_SR3M_POLYMER_FOREGRIP_BLACK = "65329ebcc0d50d0c9204ace1", + FOREGRIP_SR3M_POLYMER_FOREGRIP_PLUM = "6565c0c2ff7eb7070409084c", 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_BGVQDITI_FOREGRIP_BLACK = "661e52e29c8b4dadef008577", + FOREGRIP_TANGODOWN_BGVQDITI_FOREGRIP_FDE = "661e53149c8b4dadef008579", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_BLACK = "558032614bdc2de7118b4585", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_FDE = "58c157be86f77403c74b2bb6", FOREGRIP_TANGODOWN_STUBBY_BGVMK46K_FOREGRIP_STEALTH_GREY = "58c157c886f774032749fb06", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_BLACK = "661e52415be02310ed07a07a", + FOREGRIP_TANGODOWN_STUBBY_BGVQDK_FOREGRIP_FDE = "661e52b5b099f32c28003586", FOREGRIP_VIKING_TACTICS_UVG_TACTICAL = "591af28e86f77414a27a9e1d", FOREGRIP_ZENIT_RK0_TACTICAL = "5c1bc4812e22164bef5cfde7", FOREGRIP_ZENIT_RK1_TACTICAL = "5c1bc5612e221602b5429350", @@ -1707,10 +1778,10 @@ export declare enum ItemTpl { 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_AK545_MK_21_GAS_TUBE = "628b8d83717774443b15e248", + GASBLOCK_AK74_GAS_TUBE = "59c6633186f7740cf0493bb9", + GASBLOCK_AKM_GAS_TUBE = "59d64ec286f774171d1e0a42", + GASBLOCK_AKS74U_GAS_TUBE = "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", @@ -1727,8 +1798,8 @@ export declare enum ItemTpl { GASBLOCK_HK_416A5_LOW_PROFILE_GAS_BLOCK = "5bb20dcad4351e3bac1212da", GASBLOCK_HK_G36_GAS_BLOCK = "622b327b267a1b13a44abea3", GASBLOCK_M4A1_FRONT_SIGHT_WITH_GAS_BLOCK = "5ae30e795acfc408fb139a0b", + GASBLOCK_MCXSPEAR_ADJUSTABLE_GAS_PISTON = "652910bc24cbe3c74a05e5b9", 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", @@ -1736,7 +1807,7 @@ export declare enum ItemTpl { 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", + GASBLOCK_VPO101_GAS_TUBE = "5c5039be2e221602b177c9ff", GRENADELAUNCHER_FN40GL_01 = "5e81ebcd8e146c7080625e15", GRENADELAUNCHER_FN40GL_02 = "639c3fbbd0446708ee622ee9", GRENADELAUNCHER_FN40GL_03 = "639af924d0446708ee62294e", @@ -1754,11 +1825,11 @@ export declare enum ItemTpl { 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_AK545_MK3 = "628b916469015a4e1711ed8d", + HANDGUARD_AK74M_POLYMER = "5648b1504bdc2d9d488b4584", + HANDGUARD_AK74_POLYMER_HANDGUARD_PLUM = "5cbda9f4ae9215000e5b9bfc", + HANDGUARD_AK74_WOODEN = "5648b0744bdc2d363b8b4578", + HANDGUARD_AKM_WOODEN = "59d64f2f86f77417193ef8b3", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF = "5d15ce51d7ad1a1eff619092", HANDGUARD_AKS74U_ALFA_ARMS_GOLIAF_MLOK = "647db1eca8d3399c380d195c", HANDGUARD_AKS74U_CAA_XRSU47SU_TACTICAL = "5a957c3fa2750c00137fa5f7", @@ -1862,13 +1933,16 @@ export declare enum ItemTpl { HANDGUARD_HK_MP5_PTR_TRIRAIL = "5d19cd96d7ad1a4a992c9f52", HANDGUARD_HK_MP5_WIDE_TROPICAL_POLYMER = "5926c36d86f77467a92a8629", HANDGUARD_KS23M_FORESTOCK = "5e848d51e4dbc5266a4ec63b", + HANDGUARD_M60E4_MOD_1 = "66012d64c752a02bbe05e69b", + HANDGUARD_M60E4_MOD_1_HANDGUARD_FDE = "661fbe066751ee51930b01f2", + HANDGUARD_M60E6 = "66012d003dff5074ed002e2c", 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_MCXSPEAR_11_INCH_MLOK = "652910ef50dc782999054b97", 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", @@ -1912,24 +1986,38 @@ export declare enum ItemTpl { 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_SR2M_POLYMER_HANDGUARD_PLUM = "62e15547db1a5c41971c1b5e", + HANDGUARD_SR3M_POLYMER_HANDGUARD_BLACK = "65144f546ddb773afa0e35e1", + HANDGUARD_SR3M_POLYMER_HANDGUARD_PLUM = "6565c3ab977bcc2dbb01c2e7", + HANDGUARD_SR3M_RAILED_POLYMER_HANDGUARD_BLACK = "6568a6bf2c5fb7afc70bc424", 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_UZI_HANDGUARD_WITH_FOREGRIP = "66993149558c59581e03c028", + HANDGUARD_UZI_KGRIP = "6699313af74fef4dfd0b04f6", + HANDGUARD_UZI_POLYMER = "6698c8c736ba38d29101770b", + HANDGUARD_UZI_PRO_A3_TACTICAL_MLOK = "668031bde3e7eb26e8004cd7", HANDGUARD_VPO136_VEPRKM_WOODEN = "59e6284f86f77440d569536f", HANDGUARD_VPO209_WOODEN = "59e898ee86f77427614bd225", HANDGUARD_VSK94 = "6448f2f6d4928d46d30be3f6", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_BLACK = "6565bb7eb4b12a56eb04b084", + HANDGUARD_VSSVAL_POLYMER_HANDGUARD_PLUM = "651178336cad06c37c049eb4", 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_COMTAC_II_HEADSET_OD_GREEN = "5645bcc04bdc2d363b8b4572", + HEADPHONES_PELTOR_COMTAC_IV_HYBRID_HEADSET_COYOTE_BROWN = "628e4e576d783146b124c64d", + HEADPHONES_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6985891c84aab75ca76", + HEADPHONES_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f693acff495a294927e3", HEADPHONES_PELTOR_TACTICAL_SPORT_HEADSET = "5c165d832e2216398b5a7e36", + HEADPHONES_SAFARILAND_LIBERATOR_HP_20_HEARING_PROTECTION_HEADSET_FDE = "66b5f68de98be930d701c00e", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_VI_HEADSET_COYOTE_BROWN = "66b5f6a28ca68c6461709ed8", + HEADPHONES_TW_EXFIL_PELTOR_COMTAC_V_HEADSET_OD_GREEN = "66b5f69ea7f72d197e70bcdb", HEADPHONES_WALKERS_RAZOR_DIGITAL_HEADSET = "5e4d34ca86f774264f758330", HEADPHONES_WALKERS_XCEL_500BT_DIGITAL_HEADSET = "5f60cd6cf2bcbb675b00dac6", HEADWEAR_6B47_RATNIKBSH_HELMET_DIGITAL_FLORA_COVER = "5aa7cfc0e5b5b00015693143", @@ -1943,6 +2031,9 @@ export declare enum ItemTpl { HEADWEAR_ARMY_CAP_DESERT = "60361b0b5a45383c122086a1", HEADWEAR_ARMY_CAP_FLORA = "60361a7497633951dc245eb4", HEADWEAR_ARMY_CAP_UCP = "60361b5a9a15b10d96792291", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_ARMOR_BLACK = "66b5f65ca7f72d197e70bcd6", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_MULTICAM = "66b5f666cad6f002ab7214c2", + HEADWEAR_BALLISTIC_ARMOR_CO_BASTION_HELMET_OD_GREEN = "66b5f661af44ca0014063c05", HEADWEAR_BANDANA = "5b43271c5acfc432ff4dce65", HEADWEAR_BASEBALL_CAP = "572b7d8524597762b472f9d1", HEADWEAR_BASMACH_LEATHER_CAP = "65749ccf33fdc9c0cf06d3ca", @@ -1958,7 +2049,8 @@ export declare enum ItemTpl { HEADWEAR_BOSS_CAP = "60a7acf20c5cb24b01346648", HEADWEAR_CRYE_PRECISION_AIRFRAME_HELMET_TAN = "5c17a7ed2e2216152142459c", HEADWEAR_DED_MOROZ_HAT = "5a43943586f77416ad2f06e2", - HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "5b4329f05acfc47a86086aa1", + HEADWEAR_DEVTAC_RONIN_BALLISTIC_HELMET = "66bdc28a0b603c26902b2011", + HEADWEAR_DEVTAC_RONIN_RESPIRATOR = "5b4329f05acfc47a86086aa1", HEADWEAR_DIAMOND_AGE_BASTION_HELMET_BLACK = "5ea17ca01412a1425304d1c0", HEADWEAR_DIAMOND_AGE_NEOSTEEL_HIGH_CUT_HELMET_BLACK = "65709d2d21b9f815e208ff95", HEADWEAR_DOOR_KICKER_BOONIE_HAT = "5d96141523f0ea1b7f2aacab", @@ -2015,6 +2107,10 @@ export declare enum ItemTpl { HEADWEAR_ZRYACHIYS_BALACLAVA_FOLDED = "636270263f2495c26f00b007", HEADWEAR_ZSH12M_HELMET_BLACK_COVER = "5aa7e4a4e5b5b000137b76f2", HEADWEAR_ZSH12M_HELMET_OLIVE_DRAB = "5aa7e454e5b5b0214e506fa2", + HIDEOUTAREACONTAINER_CIRCLEOFCULTISTS_STASH_1 = "66740c3739b9da6ce402ee65", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_1 = "65e5957613227bb7690ce9f6", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_2 = "65e597266017f07a3204b775", + HIDEOUTAREACONTAINER_EQUIPMENTPRESETSTAND_STASH_3 = "65e5972a13227bb7690cea07", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_1 = "63dbd45917fff4dee40fe16e", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_2 = "65424185a57eea37ed6562e9", HIDEOUTAREACONTAINER_PLACEOFFAME_STASH_3 = "6542435ea57eea37ed6562f0", @@ -2041,16 +2137,16 @@ export declare enum ItemTpl { 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_AK105_REAR_SIGHT = "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_AK12_REAR_SIGHT_MOUNT = "649ec2da59cbb3c813042dca", + IRONSIGHT_AK545_REAR_SIGHT = "628b9471078f94059a4b9bfb", + IRONSIGHT_AK74M_REAR_SIGHT = "5ac72e475acfc400180ae6fe", + IRONSIGHT_AK74_REAR_SIGHT = "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_AKM_REAR_SIGHT = "59d650cf86f7741b846413a4", IRONSIGHT_AK_RD_ENHANCED_V2_REAR_SIGHT = "628a7b23b0f75035732dd565", IRONSIGHT_AK_TAKTIKA_TULA_TT01_REAR_SIGHT_RAIL = "5649d9a14bdc2d79388b4580", IRONSIGHT_APB_REAR_SIGHT = "5aba639ed8ce8700182ece67", @@ -2067,6 +2163,8 @@ export declare enum ItemTpl { 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_DESERT_EAGLE_FRONT_SIGHT = "668fe5ec4315934ba10c6f96", + IRONSIGHT_DESERT_EAGLE_REAR_SIGHT = "668fe5e1800f0244f9036e46", IRONSIGHT_FN_FIVESEVEN_MK2_FRONT_SIGHT = "5d3eb536a4b9363b1f22f8e2", IRONSIGHT_FN_FIVESEVEN_MK2_REAR_SIGHT = "5d3eb4aba4b93650d64e497d", IRONSIGHT_FN_SCAR_FLIPUP_FRONT_SIGHT = "61816fcad92c473c770215cc", @@ -2105,6 +2203,9 @@ export declare enum ItemTpl { 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_M60E4_FRONT_SIGHT = "6601268bc752a02bbe05e686", + IRONSIGHT_M60E6_FRONT_SIGHT_RAIL = "660126a98f2b23af220b27e7", + IRONSIGHT_M60_REAR_SIGHT = "6601265f98a610c1aa0ea637", IRONSIGHT_M9A3_FRONT_SIGHT = "5cadd919ae921500126a77f3", IRONSIGHT_M9A3_REAR_SIGHT = "5cadd940ae9215051e1c2316", IRONSIGHT_M9A3_SIGHT_MOUNT_REAR_SIGHT_RAIL = "5cadd954ae921500103bb3c2", @@ -2147,7 +2248,7 @@ export declare enum ItemTpl { IRONSIGHT_SVT40_FRONT_SIGHT = "64119d672c6d6f921a0929fb", IRONSIGHT_SVT40_REAR_SIGHT = "64119d90dcf48d656f0aa275", IRONSIGHT_TRIJICON_ACOG_BACKUP_REAR_SIGHT = "5c05295e0db834001a66acbb", - IRONSIGHT_VPO101_VEPRHUNTER_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", + IRONSIGHT_VPO101_REAR_SIGHT = "5c503b1c2e221602b21d6e9d", IRONSIGHT_VPO209_REAR_SIGHT = "59e8977386f77415a553c453", IRONSIGHT_VSS_REAR_SIGHT = "57838e1b2459774a256959b1", KEYCARD_OBJECT_11SR = "5e42c81886f7742a01529f57", @@ -2159,6 +2260,7 @@ export declare enum ItemTpl { KEYCARD_TERRAGROUP_LABS_KEYCARD_RED = "5c1d0efb86f7744baf2e7b7b", KEYCARD_TERRAGROUP_LABS_KEYCARD_VIOLET = "5c1e495a86f7743109743dfb", KEYCARD_TERRAGROUP_LABS_KEYCARD_YELLOW = "5c1d0d6d86f7744bb2683e1f", + KEYCARD_TERRAGROUP_STORAGE_ROOM = "66acd6702b17692df20144c0", KEYCARD_WITH_A_BLUE_MARKING = "5efde6b4f5448336730dbd61", KEY_ABANDONED_FACTORY_MARKED = "63a3a93f8a56922e82001f5d", KEY_ARCHIVE_ROOM = "63a39e49cd6db0635c1975fc", @@ -2383,14 +2485,17 @@ export declare enum ItemTpl { LOOTCONTAINER_AIRDROP_COMMON_SUPPLY_CRATE = "6223349b3136504a544d1608", LOOTCONTAINER_AIRDROP_MEDICAL_CRATE = "622334c873090231d904a9fc", LOOTCONTAINER_AIRDROP_SUPPLY_CRATE = "622334fa3136504a544d160c", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_1 = "66da1b49099cf6adcc07a36b", + LOOTCONTAINER_AIRDROP_TECHNICAL_SUPPLY_CRATE_EVENT_2 = "66da1b546916142b3b022777", LOOTCONTAINER_AIRDROP_WEAPON_CRATE = "6223351bb5d97a7b2c635ca7", LOOTCONTAINER_BANK_CASH_REGISTER = "64d116f41a9c6143a956127d", - LOOTCONTAINER_BANK_SAFE = "64d11702dd0cd96ab82c3280", + LOOTCONTAINER_BANK_SAFE_3X3 = "66acff0a1d8e1083b303f5af", + LOOTCONTAINER_BANK_SAFE_4X4 = "64d11702dd0cd96ab82c3280", LOOTCONTAINER_BURIED_BARREL_CACHE = "5d6d2bb386f774785b07a77a", LOOTCONTAINER_CASH_REGISTER = "578f879c24597735401e6bc6", LOOTCONTAINER_CASH_REGISTER_TAR22 = "5ad74cf586f774391278f6f0", + LOOTCONTAINER_CIVILIAN_BODY = "658420d8085fea07e674cdb6", LOOTCONTAINER_COMMON_FUND_STASH = "5d07b91b86f7745a077a9432", - LOOTCONTAINER_DEAD_CIVILIAN = "658420d8085fea07e674cdb6", LOOTCONTAINER_DEAD_SCAV = "5909e4b686f7747f5b744fa4", LOOTCONTAINER_DRAWER = "578f87b7245977356274f2cd", LOOTCONTAINER_DUFFLE_BAG = "578f87a3245977356274f2cb", @@ -2428,7 +2533,11 @@ export declare enum ItemTpl { MACHINEGUN_KALASHNIKOV_PKTM_762X54R_MODERNIZED_TANK_MACHINE_GUN = "657857faeff4c850222dff1b", MACHINEGUN_NSV_UTYOS_127X108_HEAVY_MACHINE_GUN = "5cdeb229d7f00c000e7ce174", MACHINEGUN_RPK16_545X39_LIGHT_MACHINE_GUN = "5beed0f50db834001c062b12", + MACHINEGUN_US_ORDNANCE_M60E4_762X51_LIGHT_MACHINE_GUN = "65fb023261d5829b2d090755", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN = "661ceb1b9311543c7104149b", + MACHINEGUN_US_ORDNANCE_M60E6_762X51_LIGHT_MACHINE_GUN_FDE = "661cec09b2c6356b4d0c7a36", MAGAZINE_127X108_100_100RND = "5cffa483d7ad1a049e54ef1c", + MAGAZINE_127X33_DE_7RND = "668fe5c5f35310705d02b696", MAGAZINE_127X55_ASH12_10RND = "5caf1041ae92157c28402e3f", MAGAZINE_127X55_ASH12_20RND = "5caf1109ae9215753c44119f", MAGAZINE_127X55_RSH12_CYL_5RND = "633ec6ee025b096d320a3b15", @@ -2515,8 +2624,8 @@ export declare enum ItemTpl { 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_AIRSOFT_30RND = "6241c2c2117ad530666a5108", MAGAZINE_556X45_GEN_M3_FDE_30RND = "5d1340b3d7ad1a0b52682ed7", MAGAZINE_556X45_GEN_M3_FDE_40RND = "5d1340bdd7ad1a0e8d245aab", MAGAZINE_556X45_GEN_M3_WINDOW_30RND = "55802d5f4bdc2dac148b458e", @@ -2542,6 +2651,7 @@ export declare enum ItemTpl { MAGAZINE_762X51_AA70_20RND = "5cf12a15d7f00c05464b293f", MAGAZINE_762X51_AICS_10RND = "5d25a6538abbc306c62e630d", MAGAZINE_762X51_AICS_5RND = "5d25a4a98abbc30b917421a4", + MAGAZINE_762X51_ASSAULT_BOX_100RND = "660ea4453786cc0af808a1be", MAGAZINE_762X51_AXMC_308_10RND = "628120f210e26c1f344e6558", MAGAZINE_762X51_DVL10_10RND = "5888988e24597752fe43a6fa", MAGAZINE_762X51_KAC_762_10RND = "5df8f535bb49d91fb446d6b0", @@ -2612,15 +2722,25 @@ export declare enum ItemTpl { MAGAZINE_9X19_SB7_10RND = "5998529a86f774647f44f421", MAGAZINE_9X19_SG919_20RND = "5c0673fb0db8340023300271", MAGAZINE_9X19_SG919_30RND = "5c0672ed0db834001b7353f3", + MAGAZINE_9X19_UZI_20RND = "66992713ae08c5c29e0c4f97", + MAGAZINE_9X19_UZI_25RND = "6699271b9950f5f4cd060299", + MAGAZINE_9X19_UZI_32RND = "669927203c4fda6471005cbe", + MAGAZINE_9X19_UZI_40RND = "66992725ae08c5c29e0c4f9a", + MAGAZINE_9X19_UZI_50RND = "6699272a3c4fda6471005cc1", + MAGAZINE_9X19_UZI_PRO_20RND = "668031ffe3e7eb26e8004cdd", + MAGAZINE_9X19_UZI_PRO_25RND = "66866f4ec3d473265104f381", + MAGAZINE_9X19_UZI_PRO_32RND = "66866f622a2296a8d9099639", 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_9X33R_DE_9RND = "669fa435803b94fb5d0e3a76", MAGAZINE_9X39_6L24_10RND = "57838f0b2459774a256959b2", MAGAZINE_9X39_6L25_20RND = "57838f9f2459774a150289a0", MAGAZINE_9X39_9A91_20RND = "6450ec2e7da7133e5a09ca96", MAGAZINE_9X39_SR3M130_30RND = "5a9e81fba2750c00164f6b11", + MAGAZINE_9X39_VSSVAL_30RND = "65118f531b90b4fc77015083", MAP_CUSTOMS_PLAN = "5798a2832459774b53341029", MAP_FACTORY_PLAN = "574eb85c245977648157eec3", MAP_INTERCHANGE_PLAN = "5be4038986f774527d3fae60", @@ -2748,11 +2868,13 @@ export declare enum ItemTpl { MOUNT_M1A_SOCOM_16_UPPER_PART = "5ab24ef9e5b5b00fe93c9209", MOUNT_M700_30MM_INTEGRAL_RING_SCOPE = "5bfebc5e0db834001a6694e5", MOUNT_M700_AB_ARMS_MODX_RAIL = "5cde7b43d7f00c000d36b93e", + MOUNT_M700_BADGER_ORDNANCE_SCOPE_RAIL = "65f064eec4da400cbb0dc1fe", 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_093_INCH_RAIL = "669a6a4a525be1d2d004b8eb", MOUNT_MAGPUL_MLOK_25_INCH_RAIL = "5b7be47f5acfc400170e2dd2", MOUNT_MAGPUL_MLOK_41_INCH_RAIL = "5b7be4895acfc400170e2dd5", MOUNT_MAGPUL_MLOK_CANTILEVER = "6269220d70b6c02e665f2635", @@ -2805,6 +2927,8 @@ export declare enum ItemTpl { MOUNT_RFB_HANDGUARD_RAIL = "5f2aa493cd375f14e15eea72", MOUNT_RFB_SCOPE_RAIL = "5f2aa49f9b44de6b1b4e68d4", MOUNT_RPK16_HANDGUARD_RAIL = "5beecbb80db834001d2c465e", + MOUNT_RS_REGULATE_AK303M_FULL_LENGTH_LOWER_DOVETAIL = "65f1b1176dbd6c5ba2082eed", + MOUNT_RS_REGULATE_AKR_TOP = "65f1b2a5c14a07890801fc70", MOUNT_SAG_AK_DOVETAIL_SIDE = "63d114019e35b334d82302f7", MOUNT_SAG_BIT_LOW_PROFILE_DOVETAIL_SIDE = "638db77630c4240f9e06f8b6", MOUNT_SIG_ALPHA4_30MM_RING_SCOPE = "6567e751a715f85433025998", @@ -2840,6 +2964,10 @@ export declare enum ItemTpl { MOUNT_TROY_QARS_42_INCH_RAIL = "5b4736b986f77405cb415c10", MOUNT_UM_TACTICAL_UM3_PISTOL_SIGHT = "5a7b4900e899ef197b331a2a", MOUNT_UNV_DLOCIRD_SIGHT = "5a1ead28fcdbcb001912fa9f", + MOUNT_UZI_HANDGUARD_RAIL = "6698c8f4710a4525fe0e9e57", + MOUNT_UZI_PRO_SMG_RAIL_ADAPTER = "668ea3f68117e4968b0cff4a", + MOUNT_UZI_STORMWERKZ_LOWER_HANDGUARD_RAIL = "66992f7d9950f5f4cd0602a8", + MOUNT_UZI_STORMWERKZ_SCOPE = "6698c90829e062525d0ad8ad", MOUNT_VLTOR_CASV_2_INCH_RAIL = "5b7be4575acfc400161d0832", MOUNT_VLTOR_CASV_4_INCH_RAIL = "5b7be4645acfc400170e2dcc", MOUNT_VLTOR_CASV_5_INCH_RAIL = "5b7be46e5acfc400170e2dcf", @@ -2848,13 +2976,14 @@ export declare enum ItemTpl { 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_VPO215_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", + MULTITOOLS_LEATHERMAN_MULTITOOL = "544fb5454bdc2df8738b456a", MUZZLECOMBO_9A91_HANDGUARD_RETAINER = "64527a263d52156624001fd7", MUZZLECOMBO_AI_AXMC_THREAD_PROTECTION_CAP = "628120621d5df4475f46a335", MUZZLECOMBO_AKM_762X39_KIBA_ARMS_308_MUZZLE_DEVICE_ADAPTER = "615d8e9867085e45ef1409c6", @@ -2900,10 +3029,15 @@ export declare enum ItemTpl { 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", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_RETAINING_NUT = "6698c9ba29e062525d0ad8b1", + MUZZLECOMBO_UZI_9X19_3LUG_BARREL_THREAD_PROTECTOR = "6698c9c636ba38d291017711", + MUZZLECOMBO_UZI_9X19_BARREL_RETAINING_NUT = "6698c9aa36ba38d29101770f", + MUZZLECOMBO_UZI_PRO_9X19_BARREL_RETAINING_NUT = "668670e3fb75ee4a5e02eb16", + MUZZLECOMBO_UZI_PRO_9X19_MASADA_THREAD_PROTECTOR = "668670f52a2296a8d909963c", + MUZZLECOMBO_VPO215_THREAD_PROTECTOR = "5de6556a205ddc616a6bc4f7", NIGHTVISION_ARMASIGHT_N15_NIGHT_VISION_GOGGLES = "5c066e3a0db834001b7353f0", - NIGHTVISION_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", + NIGHTVISION_L3HARRIS_ANPVS14_NIGHT_VISION_MONOCULAR = "57235b6f24597759bf5a30f1", + NIGHTVISION_L3HARRIS_GPNVG18_NIGHT_VISION_GOGGLES = "5c0558060db834001b735271", NIGHTVISION_PNV10T_NIGHT_VISION_GOGGLES = "5c0696830db834001d23f5da", OPTICSCOPE_BELOMO_PSO1M21_4X24_SCOPE = "576fd4ec2459777f0b518431", OPTICSCOPE_BELOMO_PSO1M2_4X24_SCOPE = "5c82343a2e221644f31c0611", @@ -2923,27 +3057,27 @@ export declare enum ItemTpl { 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_320X50_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_AK74_BAKELITE_PISTOL_GRIP = "5649ad3f4bdc2df8348b4585", + PISTOLGRIP_AK74_POLYMER_PISTOL_GRIP = "5649ade84bdc2d1b2b8b4587", PISTOLGRIP_AKM_BAKELITE_PISTOL_GRIP = "59e62cc886f77440d40b52a1", PISTOLGRIP_AKM_WOODEN_PISTOL_GRIP = "5a0071d486f77404e23a12b2", + PISTOLGRIP_AKS74U_BAKELITE_PISTOL_GRIP = "57e3dba62459770f0c32322b", 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_CUSTOM_GUNS_CG101_ARTYPE_PISTOL_GRIP_ADAPTER = "648ae3e356c6310a830fc291", + PISTOLGRIP_AK_FAB_DEFENSE_AGR47_PISTOL_GRIP_FDE = "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_MOLOT_BAKELITE_PISTOL_GRIP = "59e6318286f77444dd62c4cc", 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", @@ -2971,16 +3105,19 @@ export declare enum ItemTpl { 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_SIG_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_AS_VAL_PISTOL_GRIP_BLACK = "6565b91666492762f5029c0b", + PISTOLGRIP_AS_VAL_PISTOL_GRIP_PLUM = "57c44fa82459772d2d75e415", + PISTOLGRIP_AS_VAL_ROTOR_43_PISTOL_GRIP_WITH_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_DESERT_EAGLE_HOGUE_RUBBER_GRIP = "668fe5d42a0f85eea407cc16", + PISTOLGRIP_DESERT_EAGLE_HOGUE_RUBBER_GRIP_WITH_FINGER_GROOVES = "66a0da76b6f47fcfeb025e96", PISTOLGRIP_GLOCK_PACHMAYR_TACTICAL_GRIP_GLOVE = "5a7b4960e899ef197b331a2d", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_BLACK = "57c55efc2459772d2c6271e7", PISTOLGRIP_HOGUE_OVERMOLDED_RUBBER_GRIP_FDE = "57af48872459771f0b2ebf11", @@ -2993,6 +3130,12 @@ export declare enum ItemTpl { 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_M60E4_PISTOL_GRIP = "660125bf1d087a96c60a54db", + PISTOLGRIP_M60E4_TRIGGER_GROUP = "6601257f1347bc1a5f0f4db6", + PISTOLGRIP_M60E6_PISTOL_GRIP = "66152060a031cbb5570e3466", + PISTOLGRIP_M60E6_PISTOL_GRIP_FDE = "6615211ca031cbb5570e346d", + PISTOLGRIP_M60E6_TRIGGER_GROUP = "6615208aa031cbb5570e346a", + PISTOLGRIP_M60E6_TRIGGER_GROUP_FDE = "66152153a031cbb5570e346f", PISTOLGRIP_M700_MAGPUL_PRO_700_PISTOL_GRIP = "5cdeac5cd7f00c000f261694", PISTOLGRIP_M870_FAB_DEFENSE_AGR870_PISTOL_GRIP = "5bfe86a20db834001d23e8f7", PISTOLGRIP_M9A3_POLYMER_SIDE_GRIPS = "5cadc431ae921500113bb8d5", @@ -3014,9 +3157,10 @@ export declare enum ItemTpl { 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_BAKELITE_GRIP = "6374a7e7417239a7bf00f042", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP = "637784c5f7b3f4ac1a0d1a9a", PISTOLGRIP_PM_FAB_DEFENSE_PMG_PISTOL_GRIP_OLIVE_DRAB = "648afce7ec6bb25b2608defb", + PISTOLGRIP_PM_PMLASER_GRIP_WITH_LASER_SIGHT = "661f8995c341ea101e0d33e8", PISTOLGRIP_PM_TACTIC_KIT_PISTOL_GRIP = "637b6d610aef6cfc5e02dd14", PISTOLGRIP_PP1901_VITYAZ_PISTOL_GRIP = "5998517986f7746017232f7e", PISTOLGRIP_PP91_KEDR_POLYMER_PISTOL_GRIP = "57d152ec245977144076ccdf", @@ -3027,8 +3171,8 @@ export declare enum ItemTpl { 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_SR2M_PISTOL_GRIP_PLUM = "637b9c37b7e3bc41b21ce71a", PISTOLGRIP_SVDS_LYNX_ARMS_AKSERIES_PISTOL_GRIP_ADAPTER = "6516b129609aaf354b34b3a8", PISTOLGRIP_SVDS_PISTOL_GRIP = "5c471be12e221602b66cd9ac", PISTOLGRIP_TOZ106_002_PISTOL_GRIP = "5a38eecdc4a282329a73b512", @@ -3037,6 +3181,7 @@ export declare enum ItemTpl { PISTOLGRIP_TT_PMLASER_TT206_SIDE_GRIPS_WITH_LASER_SIGHT = "5bffcf7a0db83400232fea79", PISTOLGRIP_TT_RAZOR_ARMS_RUBBER_GRIP = "5c079ec50db834001966a706", PISTOLGRIP_TT_SIDE_GRIPS = "571a282c2459771fb2755a69", + PISTOLGRIP_UZI_PISTOL_GRIP_COVER = "669946c157df3e2b4e0a0dc5", PISTOL_20X1MM_TOY_GUN = "66015072e9f84d5680039678", PISTOL_APB_9X18PM_SILENCED_MACHINE = "5abccb7dd8ce87001773e277", PISTOL_BERETTA_M9A3_9X19 = "5cadc190ae921500103bb3b6", @@ -3049,6 +3194,11 @@ export declare enum ItemTpl { PISTOL_GLOCK_19X_9X19 = "63088377b5cd696784087147", PISTOL_HK_USP_45_ACP = "6193a720f8ee7e52e42109ed", PISTOL_LEBEDEV_PL15_9X19 = "602a9740da11d6478d5a06dc", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_357 = "669fa409933e898cce0c2166", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L5_50_AE = "669fa3f88abd2662d80eee77", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE = "669fa39b48fc9f8db6035a0c", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_L6_50_AE_PISTOL_WTS = "669fa3d876116c89840b1217", + PISTOL_MAGNUM_RESEARCH_DESERT_EAGLE_MK_XIX_50_AE = "668fe5a998b5ad715703ddd6", PISTOL_MAKAROV_PM_9X18PM = "5448bd6b4bdc2dfc2f8b4569", PISTOL_MAKAROV_PM_T_9X18PM = "579204f224597773d619e051", PISTOL_PB_9X18PM_SILENCED = "56e0598dd2720bb5668b45a6", @@ -3058,6 +3208,7 @@ export declare enum ItemTpl { PISTOL_TT33_762X25_TT = "571a12c42459771f627b58a0", PISTOL_TT33_762X25_TT_PISTOL_GOLDEN = "5b3b713c5acfc4330140bd8d", PISTOL_YARYGIN_MP443_GRACH_9X19 = "576a581d2459771e7b1bc4f1", + PLANTINGKITS_TRIPWIRE_INSTALLATION_KIT = "666b11055a706400b717cfa5", POCKETS_1X3 = "60c7272c204bc17802313365", POCKETS_1X4 = "557ffd194bdc2d28148b457f", POCKETS_1X4_SPECIAL = "627a4e6b255f7527fb05a0f6", @@ -3071,37 +3222,45 @@ export declare enum ItemTpl { QUEST_ARENA_POSTER_EASY_MONEY = "664b69e8e1238e506d3630af", QUEST_ARENA_POSTER_KILLA = "664b69c5a082271bc46c4e11", QUEST_BANK_CASE = "590dde5786f77405e71908b2", + QUEST_BATTERED_DIARY = "666073159916667083033cb9", QUEST_BLOOD_SAMPLE = "5a687e7886f7740c4a5133fb", + QUEST_BLOOD_SAMPLE_NF2024 = "66a0f0926fee20fa70036da6", QUEST_BOTTLE_OF_LE_JEAN_WINE = "6582bd252b50c61c565828e2", QUEST_CADASTRAL_REGISTRY_RECORDS = "657acb2ac900be5902191ac9", QUEST_CARBON_CASE = "5910922b86f7747d96753483", + QUEST_CASE_WITH_PRECISION_TOOLS = "66b22630a6b4e5ec7c02cdb7", QUEST_CHEFS_DIARY = "64f69b4267e11a7c6206e010", QUEST_CHEMCONT_SAMPLES = "63927b29c115f907b14700b9", + QUEST_CHEMICAL_CONTAINER = "66a0e523e749756c920d02d0", QUEST_CHEMICAL_CONTAINER_1 = "5b43237186f7742f3a4ab252", QUEST_CHEMICAL_CONTAINER_2 = "5b4c81a086f77417d26be63f", QUEST_CHEMICAL_CONTAINER_3 = "5b4c81bd86f77418a75ae159", + QUEST_CHEMICAL_SAMPLE = "669fac549b0ce3feae01a137", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_1 = "5ae9a3f586f7740aab00e4e6", QUEST_CLOTHES_DESIGN_HANDBOOK_PART_2 = "5ae9a4fc86f7746e381e1753", - QUEST_COMPROMISING_INFORMATION_ON_REF = "664fce7a90294949fe2d81cb", + QUEST_EASY_MONEY_POSTER_PACK = "664b69f3a082271bc46c4e13", 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_GAMING_MAGAZINE = "667a8ef464eea5fdef0db135", 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_UNUSED = "66760b3deb51b08bd40c2b08", 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_LAB_JOURNAL = "66c0b39ca1f68fcc1d0c0cc3", + QUEST_LEDX_SKIN_TRANSILLUMINATOR_US_VERSION = "666879d498b97e3a8f09f1ae", QUEST_LETTER_GOT_MAIL = "638cbc68a63f1b49be6a3010", QUEST_LETTER_HERMIT = "61904c9df62c89219a56e034", QUEST_LETTER_POSTMAN_PAT = "591093bb86f7747caa7bb2ee", @@ -3139,8 +3298,10 @@ export declare enum ItemTpl { QUEST_PICTURE_7 = "64e74a3d4d49d23b2c39d319", QUEST_PICTURE_8 = "64e74a44c2b4f829615ec334", QUEST_PICTURE_9 = "64e74a4baac4cd0a7264ecdd", + QUEST_PILOT_LOGBOOK = "66c0b90c8398582e4b0c2e27", QUEST_PUMPING_STATION_OPERATION_REPORT = "619268ad78f4fa33f173dbe5", QUEST_RADIO_TRANSMITTER_BODY = "6399f54b0a36db13c823ad21", + QUEST_REF_DIRT = "664fce7a90294949fe2d81cb", QUEST_SECRET_COMPONENT = "64f5b4f71a5f313cb144c06c", QUEST_SECURED_TAPE = "6398a4cfb5992f573c6562b3", QUEST_SECURE_FLASH_DRIVE = "59f9ddae86f77407ab46e047", @@ -3159,6 +3320,7 @@ export declare enum ItemTpl { QUEST_SURGERY_KIT_MARKED_WITH_A_BLUE_SYMBOL = "5efdafc1e70b5e33f86de058", QUEST_SYRINGE_WITH_A_CHEMICAL = "593a87af86f774122f54a951", QUEST_T90M_COMMANDER_CONTROL_PANEL = "609267a2bb3f46069c3e6c7d", + QUEST_TARKOV_CITY_SOUVENIR_KEY = "66687bc89111279d600b5062", QUEST_TOUGHBOOK_CARGO = "5a29284f86f77463ef3db363", QUEST_TOUGHBOOK_SEASIDE_VACATION = "619252352be33f26043400a7", QUEST_UAV_SAS_DISK_1 = "5a294d7c86f7740651337cf9", @@ -3234,23 +3396,35 @@ export declare enum ItemTpl { RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_48 = "6489cca131a2135f0d7d0fdd", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_49 = "6489d812cf0cd80b7e749071", RANDOMLOOTCONTAINER_EVENT_CONTAINER_AIRDROP_50 = "6489d89debac5a4a1b73caf7", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON = "6694f4101ae1778e310f4f8e", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_1 = "66a3896972c8e72507028806", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_COMMON_PLUS_2 = "66a3896de45f71bf1009e45a", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC = "6694f423909d2322a8073151", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_1 = "66a389c0705adefa710cdeaa", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_EPIC_PLUS_2 = "66a389c60982fc7e4c091c51", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE = "6694f418c74d8a180f0f78c0", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_1 = "66a3898c1df2a447cc0d3c35", + RANDOMLOOTCONTAINER_ITEM_CONTAINER_EVENT_TWITCH_SUMMER_DROPS_2024_RARE_PLUS_2 = "66a3898f0982fc7e4c091c4d", 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", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT = "66aa3a180d6ecb50a21a4e1a", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_1 = "66aa3a31efb1b8119f0196c7", + RANDOMLOOTCONTAINER_RAND_LOOT_CONTAINER_TWITCH_EVENT_PLUS_2 = "66aa3a3800b2c42adb07d13e", 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_AK12_RAILED_DUST_COVER = "649ec2f3961514b22506b111", + RECEIVER_AK545_RAILED_DUST_COVER = "628b9be6cff66b70c002b14c", + RECEIVER_AK74M_DUST_COVER = "5ac50da15acfc4001718d287", + RECEIVER_AK74_DUST_COVER = "5649af094bdc2df8348b4586", + RECEIVER_AKM_DUST_COVER = "59d6507c86f7741b846413a2", RECEIVER_AKS74UB_DUST_COVER = "5839a7742459773cf9693481", - RECEIVER_AKS74U_DUST_COVER_6P26_SB7 = "57dc334d245977597164366f", - RECEIVER_AKS74U_LEGAL_ARSENAL_PILIGRIM_RAILED_DUST_COVER = "655cb6b5d680a544f30607fa", + RECEIVER_AKS74U_DUST_COVER = "57dc334d245977597164366f", + RECEIVER_AKS74U_LEGAL_ARSENAL_PILGRIM_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", @@ -3260,6 +3434,11 @@ export declare enum ItemTpl { RECEIVER_AR15_NOVESKE_GEN3_556X45_UPPER = "5c07a8770db8340023300450", RECEIVER_AR15_VLTOR_MUR1S_556X45_UPPER = "59bfe68886f7746004266202", RECEIVER_AS_VAL_DUST_COVER = "57c44f4f2459772d2c627113", + RECEIVER_DESERT_EAGLE_L5_357_PISTOL_SLIDE = "669fa5127a09bc295603b499", + RECEIVER_DESERT_EAGLE_L5_50_AE_PISTOL_SLIDE = "669fa5019aa2a422600442f6", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE = "669fa4d97a09bc295603b496", + RECEIVER_DESERT_EAGLE_L6_PISTOL_SLIDE_WTS = "669fa5271bd4416eaa09b3ce", + RECEIVER_DESERT_EAGLE_MK_XIX_PISTOL_SLIDE = "668fe60b56984d93550462c6", RECEIVER_FAL_STANDARD_DUST_COVER = "5b7d6c105acfc40015109a5f", RECEIVER_FN_FIVESEVEN_MK2_PISTOL_SLIDE = "5d3eb44aa4b93650d64e4979", RECEIVER_FN_P90_57X28_UPPER = "5cc70102e4a949035e43ba74", @@ -3294,8 +3473,8 @@ export declare enum ItemTpl { RECEIVER_M45A1_PISTOL_SLIDE = "5f3e7823ddc4f03b010e2045", RECEIVER_M4A1_556X45_UPPER = "55d355e64bdc2d962f8b4569", RECEIVER_M9A3_PISTOL_SLIDE = "5cadc55cae921500103bb3be", + RECEIVER_MCXSPEAR_68X51_UPPER = "6529119424cbe3c74a05e5bb", 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", @@ -3327,7 +3506,8 @@ export declare enum ItemTpl { RECEIVER_SVDS_DUST_COVER = "5c471bd12e221602b4129c3a", RECEIVER_SVT_DUST_COVER = "64119cdbdcf48d656f0aa272", RECEIVER_TX15_556X45_LIGHTWEIGHT_UPPER = "5d4405aaa4b9361e6a4e6bd3", - RECEIVER_VPO101_VEPRHUNTER_DUST_COVER = "5c503d0a2e221602b542b7ef", + RECEIVER_UZI_PRO_DUST_COVER = "6680326874b8f2050c0b9178", + RECEIVER_VPO101_DUST_COVER = "5c503d0a2e221602b542b7ef", RECEIVER_VSS_DUST_COVER = "578395402459774a256959b5", REPAIRKITS_BODY_ARMOR_REPAIR_KIT = "591094e086f7747caa7bb2ef", REPAIRKITS_WEAPON_REPAIR_KIT = "5910968f86f77425cf569c32", @@ -3343,7 +3523,7 @@ export declare enum ItemTpl { SECURE_CONTAINER_GAMMA = "5857a8bc2459772bad15db29", SECURE_CONTAINER_GAMMA_TUE = "665ee77ccf2d642e98220bca", SECURE_CONTAINER_KAPPA = "5c093ca986f7740a1867ab12", - SECURE_THETA_SECURE_CONTAINER = "664a55d84a90fc2c8a6305c9", + SECURE_CONTAINER_THETA = "664a55d84a90fc2c8a6305c9", SECURE_TOURNAMENT_SECURED_CONTAINER = "64f6f4c5911bcdfe8b03b0dc", SECURE_WAIST_POUCH = "5732ee6a24597719ae0c0281", SHOTGUN_BENELLI_M3_SUPER_90_12GA_DUALMODE = "6259b864ebedf17603599e88", @@ -3399,7 +3579,7 @@ export declare enum ItemTpl { 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_MCXSPEAR_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", @@ -3407,17 +3587,18 @@ export declare enum ItemTpl { 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_ROTOR_43_366_TKM_SOUND_SUPPRESSOR = "5a9fbb74a2750c0032157181", + SILENCER_ROTOR_43_556X45_SOUND_SUPPRESSOR = "5a9fbb84a2750c00137fa685", + SILENCER_ROTOR_43_762X39_SOUND_SUPPRESSOR = "5a9fbacda2750c00141e080f", + SILENCER_ROTOR_43_762X54R_SOUND_SUPPRESSOR = "5e01ea19e9dc277128008c0b", + SILENCER_ROTOR_43_9X19_SOUND_SUPPRESSOR = "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_SR2M_9X21_SV1381_SOUND_SUPPRESSOR = "62e2a7138e1ac9380579c122", + SILENCER_SR3M_9X39_SOUND_SUPPRESSOR = "65144ff50e00edc79406836f", 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", @@ -3426,7 +3607,8 @@ export declare enum ItemTpl { 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_UZI_9X19_SOUND_SUPPRESSOR = "66993733f74fef4dfd0b04ff", + SILENCER_VPO101_ROTOR_43_762X51_SOUND_SUPPRESSOR = "5f63407e1b231926f2329f15", SILENCER_VSS_9X39_INTEGRAL_BARRELSUPPRESSOR = "57838c962459774a1651ec63", SMG_BT_MP9N_9X19_SUBMACHINE_GUN = "5de7bd7bfd6b4e6e2276dc25", SMG_BT_MP9_9X19_SUBMACHINE_GUN = "5e00903ae9dc277128008b87", @@ -3436,6 +3618,9 @@ export declare enum ItemTpl { SMG_HK_MP7A1_46X30_SUBMACHINE_GUN = "5ba26383d4351e00334c93d9", SMG_HK_MP7A2_46X30_SUBMACHINE_GUN = "5bd70322209c4d00d7167b8f", SMG_HK_UMP_45_ACP_SUBMACHINE_GUN = "5fc3e272f8b6a877a729eac5", + SMG_IWI_UZI_9X19_SUBMACHINE_GUN = "66992b349950f5f4cd06029f", + SMG_IWI_UZI_PRO_PISTOL_9X19_SUBMACHINE_GUN = "6680304edadb7aa61d00cef0", + SMG_IWI_UZI_PRO_SMG_9X19_SUBMACHINE_GUN = "668e71a8dadf42204c032ce1", SMG_PP1901_VITYAZ_9X19_SUBMACHINE_GUN = "59984ab886f7743e98271174", SMG_PP9101_KEDRB_9X18PM_SUBMACHINE_GUN = "57f3c6bd24597738e730fa2f", SMG_PP91_KEDR_9X18PM_SUBMACHINE_GUN = "57d14d2524597714373db789", @@ -3464,10 +3649,10 @@ export declare enum ItemTpl { 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_THE_EYE_MORTAR_STRIKE_SIGNALING_DEVICE = "6655e35b6bc645cb7b059912", SPECITEM_WIFI_CAMERA = "5b4391a586f7745321235ab2", STASH_EDGE_OF_DARKNESS_STASH_10X68 = "5811ce772459770e9e5f9532", STASH_LEFT_BEHIND_STASH_10X40 = "5811ce572459770cba1a34ea", @@ -3504,13 +3689,13 @@ export declare enum ItemTpl { STOCK_AI_AXMC_PISTOL_GRIP = "62811e2510e26c1f344e6554", STOCK_AK12 = "5beec8c20db834001d2c465c", STOCK_AK12_BUFFER_TUBE = "649ec87d8007560a9001ab36", - STOCK_AK545_SAG_BUFFER_TUBE = "628b9a40717774443b15e9f2", + STOCK_AK545_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_AK74M_POLYMER = "5ac50c185acfc400163398d4", + STOCK_AK74_POLYMER = "5649b0fc4bdc2d17108b4588", + STOCK_AK74_POLYMER_STOCK_PLUM = "5cbdb1b0ae9215000d50e105", + STOCK_AK74_WOODEN = "5649b1c04bdc2d16268b457c", STOCK_AKMAK74_CAA_AKTS_BUFFER_TUBE = "5cf518cfd7f00c065b422214", STOCK_AKMAK74_FAB_DEFENSE_UAS = "5b04473a5acfc40018632f70", STOCK_AKMAK74_HERA_ARMS_CQR47_PISTOL_GRIPBUTT = "619b69037b9de8162902673e", @@ -3520,15 +3705,16 @@ export declare enum ItemTpl { 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_AKMSN_FOLDING = "5abcd472d8ce8700166032ae", + STOCK_AKMS_FOLDING = "59ff3b6a86f77477562ff5ed", + STOCK_AKM_WOODEN = "59d6514b86f774171a068a08", STOCK_AKS74AKS74U_ZENIT_PT_LOCK = "59ecc28286f7746d7a68aa8c", - STOCK_AKS74U_METAL_SKELETON_STOCK_6P26_SB5 = "57dc347d245977596754e7a1", - STOCK_AKS74_METAL_SKELETONIZED_STOCK_6P21_SB5 = "5ab626e4d8ce87272e4c6e43", + STOCK_AKS74U_SKELETONIZED = "57dc347d245977596754e7a1", + STOCK_AKS74_SKELETONIZED = "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_SKELETONIZED_STOCK_CUSTOMIZED = "66ac9d9740e27931602042d4", STOCK_AK_ZENIT_PT1_KLASSIKA = "5b222d405acfc400153af4fe", STOCK_AK_ZENIT_PT3_KLASSIKA = "59ecc3dd86f7746dc827481c", STOCK_APB_DETACHABLE_WIRE = "5a17fb9dfcdbcbcae6687291", @@ -3624,6 +3810,9 @@ export declare enum ItemTpl { STOCK_M14_TROY_SASS_CHASSIS = "5ab372a310e891001717f0d8", STOCK_M1A_PROMAG_ARCHANGEL_CHASSIS = "5addbf175acfc408fb13965b", STOCK_M1A_SOCOM_16 = "5aaf8e43e5b5b00015693246", + STOCK_M60E4_BUTT = "660126161347bc1a5f0f4dba", + STOCK_M60E6_BUTT = "6615202b96461aa8360271eb", + STOCK_M60E6_BUTTSTOCK_FDE = "661520fb6f8e1a96340afaa6", 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", @@ -3636,11 +3825,9 @@ export declare enum ItemTpl { 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_ATI_MONTE_CARLO = "5bbdb870d4351e00367fb67d", STOCK_MOSIN_RIFLE_CARBINE = "5bfd384c0db834001a6691d3", STOCK_MOSIN_RIFLE_INFANTRY = "5bfd35380db83400232fe5cc", STOCK_MOSIN_RIFLE_PROMAG_ARCHANGEL_OPFOR_PRS_CHASSIS = "5bae13bad4351e00320204af", @@ -3664,11 +3851,13 @@ export declare enum ItemTpl { STOCK_MP431C_BUTTPAD = "611a31ce5b7ffe001b4649d1", STOCK_MP9 = "5de910da8b6c4240ba2651b5", STOCK_MPXMCX_COLLAPSINGTELESCOPING = "5894a13e86f7742405482982", - STOCK_MPXMCX_LIGHTWEIGHT = "5fbcc437d724d907e2077d5c", - STOCK_MPXMCX_MAXIM_DEFENSE_CQB_TELESCOPING = "5c5db6ee2e221600113fba54", + STOCK_MPXMCX_FOLDING_KNUCKLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", + STOCK_MPXMCX_MAXIM_DEFENSE_CQB = "5c5db6ee2e221600113fba54", STOCK_MPXMCX_PMM_ULSS_FOLDABLE = "5c5db6f82e2216003a0fe914", - STOCK_MPXMCX_RETRACTABLE_STOCK_ADAPTER = "58ac1bf086f77420ed183f9f", - STOCK_MPXMCX_TELESCOPING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_STOCK_ADAPTER_LOW_PROFILE_TUBE_COYOTE_TAN = "6529366450dc782999054ba0", + STOCK_MPXMCX_STOCK_LOCKING_HINGE_ASSEMBLY = "6529348224cbe3c74a05e5c4", + STOCK_MPXMCX_TELESCOPINGFOLDING = "5fbcc429900b1d5091531dd7", + STOCK_MPXMCX_THIN_SIDEFOLDING = "5fbcc437d724d907e2077d5c", STOCK_MTS25512_WOODEN = "612781056f3d944a17348d60", STOCK_MTS_2001 = "5adf23995acfc400185c2aeb", STOCK_OPSKS_WOODEN = "587e0531245977466077a0f7", @@ -3687,7 +3876,7 @@ export declare enum ItemTpl { STOCK_SA58_FOLDING = "5b7d63cf5acfc4001876c8df", STOCK_SA58_HUMPBACK_POLYMER = "5b7d645e5acfc400170e2f90", STOCK_SA58_SPR = "5b7d63de5acfc400170e2f8d", - STOCK_SKS_ATI_MONTE_CARLO_CHASSIS = "653ecef836fae5a82f02b869", + STOCK_SKS_ATI_MONTE_CARLO = "653ecef836fae5a82f02b869", STOCK_SKS_FAB_DEFENSE_UAS_BUTT = "653ed132896b99b40a0292e6", STOCK_SKS_FAB_DEFENSE_UAS_CHASSIS = "5d0236dad7ad1a0940739d29", STOCK_SKS_TAPCO_INTRAFUSE_BUFFER_TUBE = "5afd7e095acfc40017541f61", @@ -3703,28 +3892,39 @@ export declare enum ItemTpl { 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_UZI_PRO_A3_TACTICAL_MODULAR_FOLDING_BRACE = "6686717ffb75ee4a5e02eb19", + STOCK_UZI_PRO_A3_TACTICAL_REAR_STOCK_ADAPTER = "668672b8c99550c6fd0f0b29", + STOCK_UZI_PRO_BACKPLATE = "66881008f23233ee9a0742e7", + STOCK_UZI_PRO_CSM_STOCK_ADAPTER = "669cf78806768ff39504fc1c", + STOCK_UZI_PRO_SBR_BUTT = "66867310f3734a938b077f79", + STOCK_UZI_PRO_STABILIZING_BRACE = "668032ba74b8f2050c0b917d", + STOCK_UZI_STORMWERKZ_STOCK_ADAPTER = "66992f4db9f31ddda10dd1c8", + STOCK_UZI_TYPE_3_BUTT = "6698c9ed36ba38d291017713", + STOCK_UZI_TYPE_5_BUTT = "6699249f3c4fda6471005cba", + STOCK_UZI_TYPE_6_BUTT = "669924a69950f5f4cd060295", + STOCK_UZI_TYPE_7_BUTT = "6698c9e07356874dfe0a0b88", + STOCK_VPO101_SVDSTYLE_WALNUT = "5f63405df5750b524b45f114", + STOCK_VPO101_WOODEN = "5c503af12e221602b177ca02", STOCK_VPO136_VEPRKM_WOODEN = "59e6227d86f77440d64f5dc2", STOCK_VPO209_WOODEN = "59e89d0986f77427600d226e", - STOCK_VPO215_GORNOSTAY = "5de655be4a9f347bc92edb88", + STOCK_VPO215_WOODEN = "5de655be4a9f347bc92edb88", STOCK_VSK94 = "6452519e3d52156624001fd5", STOCK_VSS_WOODEN = "578395e82459774a0e553c7b", - TACTICALCOMBO_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", - TACTICALCOMBO_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", + TACTICALCOMBO_BE_MEYERS_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", TACTICALCOMBO_GLOCK_GTL_21_TACTICAL_FLASHLIGHT_WITH_LASER = "5a800961159bd4315e3a1657", TACTICALCOMBO_HOLOSUN_LS321_TACTICAL_DEVICE = "57fd23e32459772d0805bcf1", + TACTICALCOMBO_INSIGHT_ANPEQ2_TACTICAL_DEVICE = "5d10b49bd7ad1a1a560708b0", TACTICALCOMBO_INSIGHT_WMX200_TACTICAL_FLASHLIGHT = "626becf9582c3e319310b837", - TACTICALCOMBO_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", - TACTICALCOMBO_MAWLC1_TACTICAL_DEVICE = "644a3df63b0b6f03e101e065", - TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER_LAMMODULE = "5cc9c20cd7f00c001336c65d", + TACTICALCOMBO_L3HARRIS_ANPEQ15_TACTICAL_DEVICE = "544909bb4bdc2d6f028b4577", + TACTICALCOMBO_L3HARRIS_LA5BPEQ_TACTICAL_DEVICE = "5c06595c0db834001a66af6c", + TACTICALCOMBO_NCSTAR_TACTICAL_BLUE_LASER = "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_TT_DLP_TACTICAL_PRECISION_LASER_SIGHT = "5c079ed60db834001a66b372", TACTICALCOMBO_WILCOX_RAPTAR_ES_TACTICAL_RANGEFINDER = "61605d88ffa6e502ac5e7eeb", TACTICALCOMBO_ZENIT_KLESCH2IKS_IR_ILLUMINATOR_WITH_LASER = "5a5f1ce64f39f90b401987bc", TACTICALCOMBO_ZENIT_KLESCH2P_FLASHLIGHT_WITH_LASER = "560d657b4bdc2da74d8b4572", @@ -3774,6 +3974,9 @@ export declare enum ItemTpl { 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_STICH_PROFI_PLATE_CARRIER_V2_BLACK = "66b6296d7994640992013b17", + VEST_STICH_PROFI_STICH_DEFENSE_MOD2_PLATE_CARRIER_MULTICAM = "66b6295178bbc0200425f995", + VEST_TASMANIAN_TIGER_PLATE_CARRIER_MKIII_COYOTE_BROWN = "66b6295a8ca68c6461709efa", VEST_TASMANIAN_TIGER_SK_PLATE_CARRIER_MULTICAM_BLACK = "628cd624459354321c4b7fa2", VEST_TYPE_56_CHICOM_CHEST_HARNESS = "64be7110bf597ba84a0a41ea", VEST_UMKA_M33SET1_HUNTER_VEST_OLIVE_DRAB = "6034cf5fffd42c541047f72e", @@ -3786,8 +3989,8 @@ export declare enum ItemTpl { 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_ESS_CROSSBOW_TACTICAL_GLASSES = "5d5fca1ea4b93635fd598c07", VISORS_GAS_WELDER_SAFETY_GOGGLES = "61c18d83b00456371a66814b", VISORS_JOHNB_LIQUID_DNB_GLASSES = "62a09e410b9d3c46de5b6e78", VISORS_NPP_KLASS_CONDOR_GLASSES = "603409c80ca681766b6a0fb2", diff --git a/TypeScript/9RouterHooks/types/models/enums/QuestRewardType.d.ts b/TypeScript/9RouterHooks/types/models/enums/QuestRewardType.d.ts index 3f01040..e09f71d 100644 --- a/TypeScript/9RouterHooks/types/models/enums/QuestRewardType.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/QuestRewardType.d.ts @@ -9,5 +9,6 @@ export declare enum QuestRewardType { TRADER_STANDING_RESET = "TraderStandingReset", TRADER_STANDING_RESTORE = "TraderStandingRestore", STASH_ROWS = "StashRows", - ACHIEVEMENT = "Achievement" + ACHIEVEMENT = "Achievement", + POCKETS = "Pockets" } diff --git a/TypeScript/9RouterHooks/types/models/enums/TraderServiceType.d.ts b/TypeScript/9RouterHooks/types/models/enums/TraderServiceType.d.ts index f3586dc..f0ca76d 100644 --- a/TypeScript/9RouterHooks/types/models/enums/TraderServiceType.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/TraderServiceType.d.ts @@ -4,5 +4,6 @@ export declare enum TraderServiceType { CULTISTS_AID = "CultistsAid", BTR_ITEMS_DELIVERY = "BtrItemsDelivery", PLAYER_TAXI = "PlayerTaxi", - BTR_BOT_COVER = "BtrBotCover" + BTR_BOT_COVER = "BtrBotCover", + TRANSIT_ITEMS_DELIVERY = "TransitItemsDelivery" } diff --git a/TypeScript/9RouterHooks/types/models/enums/Weapons.d.ts b/TypeScript/9RouterHooks/types/models/enums/Weapons.d.ts index 178bc68..ff0ca8e 100644 --- a/TypeScript/9RouterHooks/types/models/enums/Weapons.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/Weapons.d.ts @@ -6,6 +6,7 @@ export declare enum Weapons { ASSAULTCARBINE_762X54R_SVT_40 = "643ea5b23db6f9f57107d9fd", ASSAULTCARBINE_9X39_9A_91 = "644674a13d52156624001fbc", ASSAULTCARBINE_9X39_AS_VAL = "57c44b372459772d2b39b8ce", + ASSAULTCARBINE_9X39_SR_3M = "651450ce0e00edc794068371", ASSAULTCARBINE_9X39_VSK_94 = "645e0c6b3b381ede770e1cc9", ASSAULTRIFLE_127X55_ASH_12 = "5cadfbf7ae92152ac412eeef", ASSAULTRIFLE_366TKM_VPO_209 = "59e6687d86f77411d949b251", @@ -49,9 +50,11 @@ export declare enum Weapons { ASSAULTRIFLE_762X51_MK_17_FDE = "6165ac306ef05c2ce828ef74", ASSAULTRIFLE_762X51_SA_58 = "5b0bbe4e5acfc40dc528a72d", ASSAULTRIFLE_9X18PM_MASTER_HAND = "5ae083b25acfc4001a5fc702", + FLARE_26X75_BLUE = "66d98233302686954b0c6f81", FLARE_26X75_FLARE_WHITE = "62178be9d0050232da3485d9", FLARE_26X75_GREEN = "6217726288ed9f0845317459", FLARE_26X75_RED = "62178c4d4ecf221597654e3d", + FLARE_26X75_S_YELLOW_SPECIAL_YELLOW = "66d9f1abb16d9aacf5068468", FLARE_26X75_YELLOW = "624c0b3340357b5f566e8766", GRENADELAUNCHER_40MMRU_FN40GL = "639af924d0446708ee62294e", GRENADELAUNCHER_40X46_FN40GL = "5e81ebcd8e146c7080625e15", @@ -61,6 +64,9 @@ export declare enum Weapons { MACHINEGUN_545X39_RPK_16 = "5beed0f50db834001c062b12", MACHINEGUN_762X39_RPD = "6513ef33e06849f06c0957ca", MACHINEGUN_762X39_RPDN = "65268d8ecb944ff1e90ea385", + MACHINEGUN_762X51_M60E6 = "661ceb1b9311543c7104149b", + MACHINEGUN_762X51_M60E6_FDE = "661cec09b2c6356b4d0c7a36", + MACHINEGUN_762X51_MK_43_MOD_1 = "65fb023261d5829b2d090755", MACHINEGUN_762X54R_PKM = "64637076203536ad5600c990", MACHINEGUN_762X54R_PKP = "64ca3d3954fc657e230529cc", MACHINEGUN_762X54R_PKTM = "657857faeff4c850222dff1b", @@ -72,6 +78,10 @@ export declare enum Weapons { MARKSMANRIFLE_762X54R_SVDS = "5c46fbd72e2216398b5a8c9c", MARKSMANRIFLE_86X70_MK_18_MJLNIR = "5fc22d7c187fea44d52eda44", MARKSMANRIFLE_9X39_VSS_VINTOREZ = "57838ad32459774a17445cd2", + PISTOL_127X33_DESERT_EAGLE_L5 = "669fa3f88abd2662d80eee77", + PISTOL_127X33_DESERT_EAGLE_L6 = "669fa39b48fc9f8db6035a0c", + PISTOL_127X33_DESERT_EAGLE_L6_WTS = "669fa3d876116c89840b1217", + PISTOL_127X33_DESERT_EAGLE_MK_XIX = "668fe5a998b5ad715703ddd6", PISTOL_20X1MM_BLICKY = "66015072e9f84d5680039678", PISTOL_45ACP_M1911A1 = "5e81c3cbac2bb513793cdc75", PISTOL_45ACP_M45A1 = "5f36a0e5fbf956000b716b65", @@ -93,6 +103,7 @@ export declare enum Weapons { PISTOL_9X19_P226R = "56d59856d2720bd8418b456a", PISTOL_9X19_PL_15 = "602a9740da11d6478d5a06dc", PISTOL_9X21_SR_1MP = "59f98b4986f7746f546d2cef", + PISTOL_9X33R_DESERT_EAGLE_L5 = "669fa409933e898cce0c2166", REVOLVER_127X55_RSH_12 = "633ec7c2a6918cb895019c6c", REVOLVER_12G_MTS_255_12 = "60db29ce99594040e04c4a27", REVOLVER_40X46_MSGL = "6275303a9f372d6ea97f9ec7", @@ -128,6 +139,9 @@ export declare enum Weapons { SMG_9X19_PP_19_01 = "59984ab886f7743e98271174", SMG_9X19_SAIGA_9 = "59f9cabd86f7743a10721f46", SMG_9X19_STM_9 = "60339954d62c9b14ed777c06", + SMG_9X19_UZI = "66992b349950f5f4cd06029f", + SMG_9X19_UZI_PRO_PISTOL = "6680304edadb7aa61d00cef0", + SMG_9X19_UZI_PRO_SMG = "668e71a8dadf42204c032ce1", SMG_9X19_VECTOR_9X19 = "5fc3f2d5900b1d5091531e57", SMG_9X21_SR_2M = "62e14904c2699c0ec93adc47", SNIPERRIFLE_366TKM_VPO_215_GORNOSTAY = "5de652c31b7e3716273428be", diff --git a/TypeScript/9RouterHooks/types/models/enums/WildSpawnTypeNumber.d.ts b/TypeScript/9RouterHooks/types/models/enums/WildSpawnTypeNumber.d.ts index 19d0062..407fcb0 100644 --- a/TypeScript/9RouterHooks/types/models/enums/WildSpawnTypeNumber.d.ts +++ b/TypeScript/9RouterHooks/types/models/enums/WildSpawnTypeNumber.d.ts @@ -45,12 +45,16 @@ export declare enum WildSpawnTypeNumber { FOLLOWERKOLONTAYASSAULT = 44, FOLLOWERKOLONTAYSECURITY = 45, SHOOTERBTR = 46, - SPIRITWINTER = 47, - SPIRITSPRING = 48, - PMCBEAR = 49, - PMCUSEC = 50, - SKIER = 51, - PEACEMAKER = 52, + BOSSPARTISAN = 47, + SPIRITWINTER = 48, + SPIRITSPRING = 49, + PEACEMAKER = 50, + PMCBEAR = 51, + PMCUSEC = 52, + SKIER = 53, + SECTANTPREDVESTNIK = 57, + SECTANTPRIZRAK = 58, + SECTANTONI = 59, SPTUSEC = 100, SPTBEAR = 101 } diff --git a/TypeScript/9RouterHooks/types/models/spt/bots/GenerateWeaponResult.d.ts b/TypeScript/9RouterHooks/types/models/spt/bots/GenerateWeaponResult.d.ts index d4a2526..73209ac 100644 --- a/TypeScript/9RouterHooks/types/models/spt/bots/GenerateWeaponResult.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/bots/GenerateWeaponResult.d.ts @@ -1,10 +1,10 @@ -import { Mods } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { ITemplateItem } from "@spt/models/eft/common/tables/ITemplateItem"; export declare class GenerateWeaponResult { - weapon: Item[]; + weapon: IItem[]; chosenAmmoTpl: string; chosenUbglAmmoTpl: string; - weaponMods: Mods; + weaponMods: IMods; weaponTemplate: ITemplateItem; } diff --git a/TypeScript/9RouterHooks/types/models/spt/bots/IGenerateEquipmentProperties.d.ts b/TypeScript/9RouterHooks/types/models/spt/bots/IGenerateEquipmentProperties.d.ts index 9cf7685..5381cdf 100644 --- a/TypeScript/9RouterHooks/types/models/spt/bots/IGenerateEquipmentProperties.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/bots/IGenerateEquipmentProperties.d.ts @@ -1,14 +1,14 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IMods } 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; + modPool: IMods; /** Dictionary of mod items and their chance to spawn for this bot type */ - spawnChances: Chances; + spawnChances: IChances; /** Role being generated for */ botRole: string; /** Level of bot being generated */ diff --git a/TypeScript/9RouterHooks/types/models/spt/bots/IGenerateWeaponRequest.d.ts b/TypeScript/9RouterHooks/types/models/spt/bots/IGenerateWeaponRequest.d.ts index 4bc8adf..3be9412 100644 --- a/TypeScript/9RouterHooks/types/models/spt/bots/IGenerateWeaponRequest.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/bots/IGenerateWeaponRequest.d.ts @@ -1,18 +1,18 @@ -import { Mods, ModsChances } from "@spt/models/eft/common/tables/IBotType"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IMods, IModsChances } from "@spt/models/eft/common/tables/IBotType"; +import { IItem } 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[]; + weapon: IItem[]; /** Pool of compatible mods to attach to weapon */ - modPool: Mods; + modPool: IMods; /** ParentId of weapon */ weaponId: string; /** Weapon which mods will be generated on */ parentTemplate: ITemplateItem; /** Chance values mod will be added */ - modSpawnChances: ModsChances; + modSpawnChances: IModsChances; /** Ammo tpl to use when generating magazines/cartridges */ ammoTpl: string; /** Bot-specific properties */ @@ -21,6 +21,8 @@ export interface IGenerateWeaponRequest { modLimits: BotModLimits; /** Info related to the weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; } export interface IBotData { /** Role of bot weapon is generated for */ diff --git a/TypeScript/9RouterHooks/types/models/spt/bots/IModToSpawnRequest.d.ts b/TypeScript/9RouterHooks/types/models/spt/bots/IModToSpawnRequest.d.ts index 58e9a1d..d92eea6 100644 --- a/TypeScript/9RouterHooks/types/models/spt/bots/IModToSpawnRequest.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/bots/IModToSpawnRequest.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { IBotData, IWeaponStats } from "@spt/models/spt/bots/IGenerateWeaponRequest"; import { EquipmentFilterDetails } from "@spt/models/spt/config/IBotConfig"; export interface IModToSpawnRequest { /** Slot mod will fit into */ @@ -15,7 +15,7 @@ export interface IModToSpawnRequest { /** Pool of items to pick from */ itemModPool: Record; /** Array with only weapon tpl in it, ready for mods to be added */ - weapon: Item[]; + weapon: IItem[]; /** 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 */ @@ -24,4 +24,7 @@ export interface IModToSpawnRequest { modSpawnResult: ModSpawn; /** Weapon stats for weapon being generated */ weaponStats: IWeaponStats; + /** Array of item tpls the weapon does not support */ + conflictingItemTpls: Set; + botData: IBotData; } diff --git a/TypeScript/9RouterHooks/types/models/spt/callbacks/IInraidCallbacks.d.ts b/TypeScript/9RouterHooks/types/models/spt/callbacks/IInraidCallbacks.d.ts deleted file mode 100644 index b267942..0000000 --- a/TypeScript/9RouterHooks/types/models/spt/callbacks/IInraidCallbacks.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -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): ISptProfile; - registerPlayer(url: string, info: IRegisterPlayerRequestData, sessionID: string): INullResponseData; - saveProgress(url: string, info: ISaveProgressRequestData, sessionID: string): INullResponseData; - getRaidEndState(): string; - getRaidMenuSettings(url: string, info: IEmptyRequestData, sessionID: string): string; - getWeaponDurability(url: string, info: any, sessionID: string): string; - getAirdropConfig(url: string, info: any, sessionID: string): string; -} diff --git a/TypeScript/9RouterHooks/types/models/spt/callbacks/IWishlistCallbacks.d.ts b/TypeScript/9RouterHooks/types/models/spt/callbacks/IWishlistCallbacks.d.ts deleted file mode 100644 index 16f056d..0000000 --- a/TypeScript/9RouterHooks/types/models/spt/callbacks/IWishlistCallbacks.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -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/9RouterHooks/types/models/spt/config/IAirdropConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IAirdropConfig.d.ts index d438f00..1858e06 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IAirdropConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IAirdropConfig.d.ts @@ -3,29 +3,12 @@ import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IAirdropConfig extends IBaseConfig { kind: "spt-airdrop"; - airdropChancePercent: AirdropChancePercent; airdropTypeWeightings: Record; - /** Lowest point plane will fly at */ - planeMinFlyHeight: number; - /** Highest point plane will fly at */ - planeMaxFlyHeight: number; - /** Loudness of plane engine */ - planeVolume: number; - /** Speed plane flies overhead */ - planeSpeed: number; - /** Speed loot crate falls after being dropped */ - crateFallSpeed: number; - /** Container tpls to use when spawning crate - affects container size, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - containerIds: Record; - /** Earliest time aircraft will spawn in raid */ - airdropMinStartTimeSeconds: number; - /** Latest time aircraft will spawn in raid */ - airdropMaxStartTimeSeconds: number; /** What rewards will the loot crate contain, keyed by drop type e.g. mixed/weaponArmor/foodMedical/barter */ - loot: Record; + loot: Record; } /** Chance map will have an airdrop occur out of 100 - locations not included count as 0% */ -export interface AirdropChancePercent { +export interface IAirdropChancePercent { bigmap: number; woods: number; lighthouse: number; @@ -36,7 +19,7 @@ export interface AirdropChancePercent { sandbox: number; } /** Loot inside crate */ -export interface AirdropLoot { +export interface IAirdropLoot { /** Min/max of weapons inside crate */ weaponPresetCount?: MinMax; /** Min/max of armors (head/chest/rig) inside crate */ diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IBTRConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IBTRConfig.d.ts deleted file mode 100644 index 2f56f73..0000000 --- a/TypeScript/9RouterHooks/types/models/spt/config/IBTRConfig.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/9RouterHooks/types/models/spt/config/IBotConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IBotConfig.d.ts index b8c782a..1954eb0 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IBotConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IBotConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } 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 { @@ -133,6 +133,7 @@ export interface EquipmentFilters { /** Should the stock mod be forced to spawn on bot */ forceStock?: boolean; armorPlateWeighting?: IArmorPlateWeights[]; + forceRigWhenNoVest?: boolean; } export interface ModLimits { /** How many scopes are allowed on a weapon - hard coded to work with OPTIC_SCOPE, ASSAULT_SCOPE, COLLIMATOR, COMPACT_COLLIMATOR */ @@ -143,7 +144,7 @@ export interface ModLimits { export interface RandomisationDetails { /** Between what levels do these randomisation setting apply to */ levelRange: MinMax; - generation?: Record; + generation?: Record; /** 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' */ diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IBotDurability.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IBotDurability.d.ts index 728db97..8dc9d02 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IBotDurability.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IBotDurability.d.ts @@ -1,45 +1,45 @@ export interface IBotDurability { - default: DefaultDurability; + default: IDefaultDurability; pmc: PmcDurability; - boss: BotDurability; - follower: BotDurability; - assault: BotDurability; - cursedassault: BotDurability; - marksman: BotDurability; - pmcbot: BotDurability; - arenafighterevent: BotDurability; - arenafighter: BotDurability; - crazyassaultevent: BotDurability; - exusec: BotDurability; - gifter: BotDurability; - sectantpriest: BotDurability; - sectantwarrior: BotDurability; + boss: IBotDurability; + follower: IBotDurability; + assault: IBotDurability; + cursedassault: IBotDurability; + marksman: IBotDurability; + pmcbot: IBotDurability; + arenafighterevent: IBotDurability; + arenafighter: IBotDurability; + crazyassaultevent: IBotDurability; + exusec: IBotDurability; + gifter: IBotDurability; + sectantpriest: IBotDurability; + sectantwarrior: IBotDurability; } /** Durability values to be used when a more specific bot type cant be found */ -export interface DefaultDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IDefaultDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } export interface PmcDurability { - armor: PmcDurabilityArmor; - weapon: WeaponDurability; + armor: IPmcDurabilityArmor; + weapon: IWeaponDurability; } -export interface PmcDurabilityArmor { +export interface IPmcDurabilityArmor { lowestMaxPercent: number; highestMaxPercent: number; maxDelta: number; minDelta: number; } -export interface BotDurability { - armor: ArmorDurability; - weapon: WeaponDurability; +export interface IBotDurability { + armor: IArmorDurability; + weapon: IWeaponDurability; } -export interface ArmorDurability { +export interface IArmorDurability { maxDelta: number; minDelta: number; minLimitPercent: number; } -export interface WeaponDurability { +export interface IWeaponDurability { lowestMax: number; highestMax: number; maxDelta: number; diff --git a/TypeScript/9RouterHooks/types/models/spt/config/ICoreConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/ICoreConfig.d.ts index 6d086f7..39c4f18 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/ICoreConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/ICoreConfig.d.ts @@ -67,6 +67,7 @@ export interface IServerFeatures { } export interface IChatbotFeatures { sptFriendEnabled: boolean; + sptFriendGiftsEnabled: boolean; commandoEnabled: boolean; commandoFeatures: ICommandoFeatures; commandUseLimits: Record; diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IGiftsConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IGiftsConfig.d.ts index 736c4b7..4a9450e 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IGiftsConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IGiftsConfig.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -7,11 +7,11 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; import { IProfileChangeEvent } from "@spt/models/spt/dialog/ISendMessageDetails"; export interface IGiftsConfig extends IBaseConfig { kind: "spt-gifts"; - gifts: Record; + gifts: Record; } -export interface Gift { +export interface IGift { /** Items to send to player */ - items: Item[]; + items: IItem[]; /** Who is sending the gift to player */ sender: GiftSenderType; /** Optinal - supply a users id to send from, not necessary when sending from SYSTEM or TRADER */ diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IHideoutConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IHideoutConfig.d.ts index c1967c0..ec0c181 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IHideoutConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IHideoutConfig.d.ts @@ -1,3 +1,4 @@ +import { MinMax } from "@spt/models/common/MinMax"; import { IBaseConfig, IRunIntervalValues } from "@spt/models/spt/config/IBaseConfig"; export interface IHideoutConfig extends IBaseConfig { kind: "spt-hideout"; @@ -11,4 +12,28 @@ export interface IHideoutConfig extends IBaseConfig { overrideBuildTimeSeconds: number; /** Only process a profiles hideout crafts when it has been active in the last x minutes */ updateProfileHideoutWhenActiveWithinMinutes: number; + cultistCircle: ICultistCircleSettings; +} +export interface ICultistCircleSettings { + maxRewardItemCount: number; + maxAttemptsToPickRewardsWithinBudget: number; + rewardPriceMultiplerMinMax: MinMax; + craftTimeThreshholds: CraftTimeThreshhold[]; + /** -1 means no override */ + craftTimeOverride: number; + /** Specific reward pool when player sacrificed one specific item */ + directRewards: Record; + directRewardStackSize: Record; + /** Item tpls to exclude from the reward pool */ + rewardItemBlacklist: string[]; + /** Item tpls to include in the reward pool */ + additionalRewardItemPool: string[]; + currencyRewards: Record; +} +export interface CraftTimeThreshhold extends MinMax { + craftTimeSeconds: number; +} +export interface DirectRewardSettings { + rewardTpls: string[]; + craftTimeSeconds: number; } diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IInRaidConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IInRaidConfig.d.ts index 7d6befd..d5fe8f6 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IInRaidConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IInRaidConfig.d.ts @@ -1,7 +1,6 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IInRaidConfig extends IBaseConfig { kind: "spt-inraid"; - MIAOnRaidEnd: boolean; /** Overrides to apply to the pre-raid settings screen */ raidMenuSettings: RaidMenuSettings; /** What effects should be saved post-raid */ @@ -20,6 +19,8 @@ export interface IInRaidConfig extends IBaseConfig { pmcKillProbabilityForScavGain: number; /** On death should items in your secure keep their Find in raid status regardless of how you finished the raid */ keepFiRSecureContainerOnDeath: boolean; + /** If enabled always keep found in raid status on items */ + alwaysKeepFoundInRaidonRaidEnd: boolean; /** Percentage chance a player scav hot is hostile to the player when scavving */ playerScavHostileChancePercent: number; } diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IInsuranceConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IInsuranceConfig.d.ts index 2bbd7b3..6c90fe0 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IInsuranceConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IInsuranceConfig.d.ts @@ -13,4 +13,5 @@ export interface IInsuranceConfig extends IBaseConfig { runIntervalSeconds: number; minAttachmentRoublePriceToBeTaken: number; chanceNoAttachmentsTakenPercent: number; + simulateItemsBeingTaken: boolean; } diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IInventoryConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IInventoryConfig.d.ts index b489393..3a2de2a 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IInventoryConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IInventoryConfig.d.ts @@ -15,7 +15,7 @@ export interface RewardDetails { rewardCount: number; foundInRaid: boolean; rewardTplPool?: Record; - rewardTypePool?: Record; + rewardTypePool?: string[]; } export interface ISealedAirdropContainerSettings { weaponRewardWeight: Record; diff --git a/TypeScript/9RouterHooks/types/models/spt/config/ILocationConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/ILocationConfig.d.ts index 1e113b2..55123d6 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/ILocationConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/ILocationConfig.d.ts @@ -1,5 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } from "@spt/models/eft/common/ILocationBase"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILocationConfig extends IBaseConfig { kind: "spt-location"; @@ -9,10 +9,10 @@ export interface ILocationConfig extends IBaseConfig { rogueLighthouseSpawnTimeSettings: IRogueLighthouseSpawnTimeSettings; /** When a map has hit max alive bots, any wave that should spawn will be reduced to 1 bot in size and placed in a spawn queue, this splits waves into smaller sizes to reduce the impact of this behaviour */ splitWaveIntoSingleSpawnsSettings: ISplitWaveSettings; - looseLootMultiplier: LootMultiplier; - staticLootMultiplier: LootMultiplier; + looseLootMultiplier: ILootMultiplier; + staticLootMultiplier: ILootMultiplier; /** Custom bot waves to add to a locations base json on game start if addCustomBotWavesToMaps is true */ - customWaves: CustomWaves; + customWaves: ICustomWaves; /** Open zones to add to map */ openZones: Record; /** Key = map id, value = item tpls that should only have one forced loot spawn position */ @@ -44,8 +44,6 @@ export interface ILocationConfig extends IBaseConfig { 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; @@ -63,16 +61,16 @@ export interface ISplitWaveSettings { ignoreMaps: string[]; waveSizeThreshold: number; } -export interface CustomWaves { +export interface ICustomWaves { /** Bosses spawn on raid start */ - boss: Record; - normal: Record; + boss: Record; + normal: Record; } export interface IBotTypeLimit extends MinMax { type: string; } /** Multiplier to apply to the loot count for a given map */ -export interface LootMultiplier { +export interface ILootMultiplier { bigmap: number; develop: number; factory4_day: number; diff --git a/TypeScript/9RouterHooks/types/models/spt/config/ILootConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/ILootConfig.d.ts index e22c3ea..4e73ea0 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/ILootConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/ILootConfig.d.ts @@ -1,9 +1,9 @@ -import { Spawnpoint } from "@spt/models/eft/common/ILooseLoot"; +import { ISpawnpoint } from "@spt/models/eft/common/ILooseLoot"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILootConfig extends IBaseConfig { kind: "spt-loot"; /** Spawn positions to add into a map, key=mapid */ - looseLoot: Record; + looseLoot: Record; /** Loose loot probability adjustments to apply on game start */ looseLootSpawnPointAdjustments: Record>; } diff --git a/TypeScript/9RouterHooks/types/models/spt/config/ILostOnDeathConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/ILostOnDeathConfig.d.ts index 8574646..71408ce 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/ILostOnDeathConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/ILostOnDeathConfig.d.ts @@ -2,13 +2,13 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface ILostOnDeathConfig extends IBaseConfig { kind: "spt-lostondeath"; /** What equipment in each slot should be lost on death */ - equipment: Equipment; + equipment: ILostEquipment; /** Should special slot items be removed from quest inventory on death e.g. wifi camera/markers */ specialSlotItems: boolean; /** Should quest items be removed from quest inventory on death */ questItems: boolean; } -export interface Equipment { +export interface ILostEquipment { ArmBand: boolean; Headwear: boolean; Earpiece: boolean; diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IPlayerScavConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IPlayerScavConfig.d.ts index 8834768..9c1046f 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IPlayerScavConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IPlayerScavConfig.d.ts @@ -1,4 +1,4 @@ -import { GenerationData } from "@spt/models/eft/common/tables/IBotType"; +import { IGenerationData } from "@spt/models/eft/common/tables/IBotType"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPlayerScavConfig extends IBaseConfig { kind: "spt-playerscav"; @@ -16,10 +16,10 @@ export interface Modifiers { mod: Record; } export interface ItemLimits { - healing: GenerationData; - drugs: GenerationData; - stims: GenerationData; - looseLoot: GenerationData; - magazines: GenerationData; - grenades: GenerationData; + healing: IGenerationData; + drugs: IGenerationData; + stims: IGenerationData; + looseLoot: IGenerationData; + magazines: IGenerationData; + grenades: IGenerationData; } diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IPmcConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IPmcConfig.d.ts index 00fabb3..8fd2e5f 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IPmcConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IPmcConfig.d.ts @@ -1,4 +1,5 @@ import { MinMax } from "@spt/models/common/MinMax"; +import { IChancedEnemy } from "@spt/models/eft/common/ILocationBase"; import { MemberCategory } from "@spt/models/enums/MemberCategory"; import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IPmcConfig extends IBaseConfig { @@ -29,27 +30,37 @@ export interface IPmcConfig extends IBaseConfig { usecType: string; /** WildSpawnType enum value BEAR PMCs use */ bearType: string; - chanceSameSideIsHostilePercent: number; /** What 'brain' does a PMC use, keyed by map and side (USEC/BEAR) key: map location, value: type for usec/bear */ pmcType: Record>>; - maxBackpackLootTotalRub: number; + maxBackpackLootTotalRub: MinMaxLootValue[]; maxPocketLootTotalRub: number; maxVestLootTotalRub: number; - /** Percentage chance a bot from a wave is converted into a PMC, key = bot wildspawn tpye (assault/exusec), value: min+max chance to be converted */ - convertIntoPmcChance: Record; - /** WildSpawnType bots PMCs should see as hostile */ - enemyTypes: string[]; + /** Percentage chance a bot from a wave is converted into a PMC, first key = map, second key = bot wildspawn type (assault/exusec), value: min+max chance to be converted */ + convertIntoPmcChance: Record>; /** 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; + hostilitySettings: Record; allPMCsHavePlayerNameWithRandomPrefixChance: number; locationSpecificPmcLevelOverride: Record; /** Should secure container loot from usec.json/bear.json be added to pmc bots secure */ addSecureContainerLootFromBotConfig: boolean; } +export interface IHostilitySettings { + /** Bot roles that are 100% an enemy */ + additionalEnemyTypes?: string[]; + /** Objects that determine the % chance another bot type is an enemy */ + chancedEnemies?: IChancedEnemy[]; + bearEnemyChance?: number; + usecEnemyChance?: number; + savageEnemyChance?: number; + /** Bot roles that are 100% an friendly */ + additionalFriendlyTypes?: string[]; + savagePlayerBehaviour?: string; +} export interface PmcTypes { usec: string; bear: string; @@ -58,3 +69,6 @@ export interface SlotLootSettings { whitelist: string[]; blacklist: string[]; } +export interface MinMaxLootValue extends MinMax { + value: number; +} diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IQuestConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IQuestConfig.d.ts index a4257cf..e4e76eb 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IQuestConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IQuestConfig.d.ts @@ -13,6 +13,10 @@ export interface IQuestConfig extends IBaseConfig { locationIdMap: Record; bearOnlyQuests: string[]; usecOnlyQuests: string[]; + /** Quests that the keyed game version do not see/access */ + profileBlacklist: Record; + /** Quests that only the keyed game version can see/access */ + profileWhitelist: Record; } export interface IPlayerTypeQuestIds { pmc: IQuestTypeIds; @@ -49,6 +53,7 @@ export interface IRepeatableQuestConfig { rewardAmmoStackMinSize: number; freeChangesAvailable: number; freeChanges: number; + keepDailyQuestTypeOnReplacement: boolean; } export interface IRewardScaling { levels: number[]; diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IRagfairConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IRagfairConfig.d.ts index bb318de..a62f2c9 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IRagfairConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IRagfairConfig.d.ts @@ -11,6 +11,7 @@ export interface IRagfairConfig extends IBaseConfig { /** Trader ids + should their assorts be listed on flea */ traders: Record; dynamic: Dynamic; + tieredFlea: ITieredFlea; } export interface Sell { /** Should a fee be deducted from player when liting an item for sale */ @@ -156,3 +157,9 @@ export interface IArmorSettings { /** What slots are to be removed when removeRemovablePlateChance is true */ plateSlotIdToRemovePool: string[]; } +export interface ITieredFlea { + enabled: boolean; + unlocks: Record; + ammoTiersEnabled: boolean; + ammoTplUnlocks: Record; +} diff --git a/TypeScript/9RouterHooks/types/models/spt/config/IScavCaseConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/IScavCaseConfig.d.ts index f2ff2f2..949180e 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/IScavCaseConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/IScavCaseConfig.d.ts @@ -3,27 +3,27 @@ import { IBaseConfig } from "@spt/models/spt/config/IBaseConfig"; export interface IScavCaseConfig extends IBaseConfig { kind: "spt-scavcase"; rewardItemValueRangeRub: Record; - moneyRewards: MoneyRewards; - ammoRewards: AmmoRewards; + moneyRewards: IMoneyRewards; + ammoRewards: IAmmoRewards; rewardItemParentBlacklist: string[]; rewardItemBlacklist: string[]; allowMultipleMoneyRewardsPerRarity: boolean; allowMultipleAmmoRewardsPerRarity: boolean; allowBossItemsAsRewards: boolean; } -export interface MoneyRewards { +export interface IMoneyRewards { moneyRewardChancePercent: number; - rubCount: MoneyLevels; - usdCount: MoneyLevels; - eurCount: MoneyLevels; - gpCount: MoneyLevels; + rubCount: IMoneyLevels; + usdCount: IMoneyLevels; + eurCount: IMoneyLevels; + gpCount: IMoneyLevels; } -export interface MoneyLevels { +export interface IMoneyLevels { common: MinMax; rare: MinMax; superrare: MinMax; } -export interface AmmoRewards { +export interface IAmmoRewards { ammoRewardChancePercent: number; ammoRewardBlacklist: Record; ammoRewardValueRangeRub: Record; diff --git a/TypeScript/9RouterHooks/types/models/spt/config/ISeasonalEventConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/ISeasonalEventConfig.d.ts index da7070b..1280bc5 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/ISeasonalEventConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/ISeasonalEventConfig.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn } 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 { @@ -8,8 +8,8 @@ export interface ISeasonalEventConfig extends IBaseConfig { eventGear: Record>>>; events: ISeasonalEvent[]; eventBotMapping: Record; - eventBossSpawns: Record>; - gifterSettings: GifterSetting[]; + eventBossSpawns: Record>; + gifterSettings: IGifterSetting[]; } export interface ISeasonalEvent { name: string; @@ -19,7 +19,7 @@ export interface ISeasonalEvent { endDay: number; endMonth: number; } -export interface GifterSetting { +export interface IGifterSetting { map: string; zones: string; spawnChance: number; diff --git a/TypeScript/9RouterHooks/types/models/spt/config/ITraderConfig.d.ts b/TypeScript/9RouterHooks/types/models/spt/config/ITraderConfig.d.ts index d60b496..4388202 100644 --- a/TypeScript/9RouterHooks/types/models/spt/config/ITraderConfig.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/config/ITraderConfig.d.ts @@ -10,6 +10,7 @@ export interface ITraderConfig extends IBaseConfig { updateTimeDefault: number; traderPriceMultipler: number; fence: FenceConfig; + moddedTraders: ModdedTraders; } export interface UpdateTime { traderId: string; @@ -63,3 +64,8 @@ export interface DiscountOptions { weaponPresetMinMax: MinMax; equipmentPresetMinMax: MinMax; } +/** Custom trader data needed client side for things such as the clothing service */ +export interface ModdedTraders { + /** Trader Ids to enable the clothing service for */ + clothingService: string[]; +} diff --git a/TypeScript/9RouterHooks/types/models/spt/controllers/IBotController.d.ts b/TypeScript/9RouterHooks/types/models/spt/controllers/IBotController.d.ts index e577497..329dd43 100644 --- a/TypeScript/9RouterHooks/types/models/spt/controllers/IBotController.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/controllers/IBotController.d.ts @@ -1,10 +1,10 @@ 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"; +import { IDifficultyCategories } from "@spt/models/eft/common/tables/IBotType"; export interface IBotController { getBotLimit(type: string): number; - getBotDifficulty(type: string, difficulty: string): IBotCore | Difficulty; + getBotDifficulty(type: string, difficulty: string): IBotCore | IDifficultyCategories; isBotPmc(botRole: string): boolean; isBotBoss(botRole: string): boolean; isBotFollower(botRole: string): boolean; diff --git a/TypeScript/9RouterHooks/types/models/spt/dialog/ISendMessageDetails.d.ts b/TypeScript/9RouterHooks/types/models/spt/dialog/ISendMessageDetails.d.ts index 1625f47..c3c23db 100644 --- a/TypeScript/9RouterHooks/types/models/spt/dialog/ISendMessageDetails.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/dialog/ISendMessageDetails.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -16,7 +16,7 @@ export interface ISendMessageDetails { /** Optional - used in player/system messages, otherwise templateId is used */ messageText?: string; /** Optinal - Items to send to player */ - items?: Item[]; + items?: IItem[]; /** Optional - How long items will be stored in mail before expiry */ itemsMaxStorageLifetimeSeconds?: number; /** Optional - Used when sending messages from traders who send text from locale json */ diff --git a/TypeScript/9RouterHooks/types/models/spt/fence/ICreateFenceAssortsResult.d.ts b/TypeScript/9RouterHooks/types/models/spt/fence/ICreateFenceAssortsResult.d.ts index 553f4e2..1af9f84 100644 --- a/TypeScript/9RouterHooks/types/models/spt/fence/ICreateFenceAssortsResult.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/fence/ICreateFenceAssortsResult.d.ts @@ -1,7 +1,7 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; import { IBarterScheme } from "@spt/models/eft/common/tables/ITrader"; export interface ICreateFenceAssortsResult { - sptItems: Item[][]; + sptItems: IItem[][]; barter_scheme: Record; loyal_level_items: Record; } diff --git a/TypeScript/9RouterHooks/types/models/spt/generators/IBotGenerator.d.ts b/TypeScript/9RouterHooks/types/models/spt/generators/IBotGenerator.d.ts index e46ce24..ebc954d 100644 --- a/TypeScript/9RouterHooks/types/models/spt/generators/IBotGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/generators/IBotGenerator.d.ts @@ -1,5 +1,5 @@ -import { Inventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; -import { Chances, Generation, Inventory } from "@spt/models/eft/common/tables/IBotType"; +import { IInventory as PmcInventory } from "@spt/models/eft/common/tables/IBotBase"; +import { IChances, IGeneration, IInventory } from "@spt/models/eft/common/tables/IBotType"; export interface IBotGenerator { - generateInventory(templateInventory: Inventory, equipmentChances: Chances, generation: Generation, botRole: string, isPmc: boolean): PmcInventory; + generateInventory(templateInventory: IInventory, equipmentChances: IChances, generation: IGeneration, botRole: string, isPmc: boolean): PmcInventory; } diff --git a/TypeScript/9RouterHooks/types/models/spt/generators/ILocationGenerator.d.ts b/TypeScript/9RouterHooks/types/models/spt/generators/ILocationGenerator.d.ts index 2df98e7..8090538 100644 --- a/TypeScript/9RouterHooks/types/models/spt/generators/ILocationGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/generators/ILocationGenerator.d.ts @@ -1,6 +1,6 @@ import { IStaticAmmoDetails, IStaticContainerProps, IStaticForcedProps, IStaticLootDetails } from "@spt/models/eft/common/ILocation"; -import { ILooseLoot, SpawnpointTemplate } from "@spt/models/eft/common/ILooseLoot"; +import { ILooseLoot, ISpawnpointTemplate } 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[]; + generateDynamicLoot(dynamicLootDist: ILooseLoot, staticAmmoDist: Record, locationName: string): ISpawnpointTemplate[]; } diff --git a/TypeScript/9RouterHooks/types/models/spt/generators/IRagfairAssortGenerator.d.ts b/TypeScript/9RouterHooks/types/models/spt/generators/IRagfairAssortGenerator.d.ts index 193b685..380387e 100644 --- a/TypeScript/9RouterHooks/types/models/spt/generators/IRagfairAssortGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/generators/IRagfairAssortGenerator.d.ts @@ -1,4 +1,4 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IRagfairAssortGenerator { - getAssortItems(): Item[]; + getAssortItems(): IItem[]; } diff --git a/TypeScript/9RouterHooks/types/models/spt/generators/IRagfairOfferGenerator.d.ts b/TypeScript/9RouterHooks/types/models/spt/generators/IRagfairOfferGenerator.d.ts index 66d28e9..e3d3f1b 100644 --- a/TypeScript/9RouterHooks/types/models/spt/generators/IRagfairOfferGenerator.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/generators/IRagfairOfferGenerator.d.ts @@ -1,6 +1,6 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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; + createOffer(userID: string, time: number, items: IItem[], barterScheme: IBarterScheme[], loyalLevel: number, price: number, sellInOnePiece: boolean): IRagfairOffer; } diff --git a/TypeScript/9RouterHooks/types/models/spt/hideout/IHideout.d.ts b/TypeScript/9RouterHooks/types/models/spt/hideout/IHideout.d.ts index 57fed47..e93f748 100644 --- a/TypeScript/9RouterHooks/types/models/spt/hideout/IHideout.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/hideout/IHideout.d.ts @@ -1,11 +1,11 @@ import { IHideoutArea } from "@spt/models/eft/hideout/IHideoutArea"; -import { IHideoutProduction } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IHideoutProductionData } 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[]; + production: IHideoutProductionData; scavcase: IHideoutScavCase[]; settings: IHideoutSettingsBase; qte: IQteData[]; diff --git a/TypeScript/9RouterHooks/types/models/spt/inventory/IOwnerInventoryItems.d.ts b/TypeScript/9RouterHooks/types/models/spt/inventory/IOwnerInventoryItems.d.ts index dd4efab..95ed39e 100644 --- a/TypeScript/9RouterHooks/types/models/spt/inventory/IOwnerInventoryItems.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/inventory/IOwnerInventoryItems.d.ts @@ -1,9 +1,9 @@ -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IOwnerInventoryItems { /** Inventory items from source */ - from: Item[]; + from: IItem[]; /** Inventory items at destination */ - to: Item[]; + to: IItem[]; sameInventory: boolean; isMail: boolean; } diff --git a/TypeScript/9RouterHooks/types/models/spt/services/IInsuranceEquipmentPkg.d.ts b/TypeScript/9RouterHooks/types/models/spt/services/IInsuranceEquipmentPkg.d.ts index 92d0565..93aecfa 100644 --- a/TypeScript/9RouterHooks/types/models/spt/services/IInsuranceEquipmentPkg.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/services/IInsuranceEquipmentPkg.d.ts @@ -1,8 +1,8 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; export interface IInsuranceEquipmentPkg { sessionID: string; pmcData: IPmcData; - itemToReturnToPlayer: Item; + itemToReturnToPlayer: IItem; traderId: string; } diff --git a/TypeScript/9RouterHooks/types/models/spt/templates/ITemplates.d.ts b/TypeScript/9RouterHooks/types/models/spt/templates/ITemplates.d.ts index c2ebbf9..9f9b0d5 100644 --- a/TypeScript/9RouterHooks/types/models/spt/templates/ITemplates.d.ts +++ b/TypeScript/9RouterHooks/types/models/spt/templates/ITemplates.d.ts @@ -1,6 +1,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -21,4 +22,6 @@ export interface ITemplates { defaultEquipmentPresets: IDefaultEquipmentPreset[]; /** Achievements */ achievements: IAchievement[]; + /** Location services data */ + locationServices: ILocationServices; } diff --git a/TypeScript/9RouterHooks/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts b/TypeScript/9RouterHooks/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts new file mode 100644 index 0000000..ba1782b --- /dev/null +++ b/TypeScript/9RouterHooks/types/models/spt/weather/IGetLocalWeatherResponseData.d.ts @@ -0,0 +1,5 @@ +import { IWeather } from "@spt/models/eft/weather/IWeatherData"; +export interface IGetLocalWeatherResponseData { + season: number; + weather: IWeather[]; +} diff --git a/TypeScript/9RouterHooks/types/routers/EventOutputHolder.d.ts b/TypeScript/9RouterHooks/types/routers/EventOutputHolder.d.ts index 148461a..614a75c 100644 --- a/TypeScript/9RouterHooks/types/routers/EventOutputHolder.d.ts +++ b/TypeScript/9RouterHooks/types/routers/EventOutputHolder.d.ts @@ -1,6 +1,6 @@ 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 { IHideoutImprovement, IMoneyTransferLimits, IProductive, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; import { TraderData } from "@spt/models/eft/itemEvent/IItemEventRouterBase"; import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -30,12 +30,13 @@ export declare class EventOutputHolder { * @param sessionId Session id */ updateOutputProperties(sessionId: string): void; + protected resetMoneyTransferLimit(limit: IMoneyTransferLimits): void; /** * Convert the internal trader data object into an object we can send to the client * @param traderData server data for traders * @returns dict of trader id + TraderData */ - protected constructTraderRelations(traderData: Record): Record; + protected constructTraderRelations(traderData: Record): Record; /** * Return all hideout Improvements from player profile, adjust completed Improvements' completed property to be true * @param pmcData Player profile @@ -47,10 +48,10 @@ export declare class EventOutputHolder { * @param pmcData Player profile * @returns dictionary of hideout productions */ - protected getProductionsFromProfileAndFlagComplete(productions: Record, sessionId: string): Record | undefined; + 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 */ - protected cleanUpCompleteCraftsInProfile(productions: Record): void; + protected cleanUpCompleteCraftsInProfile(productions: Record): void; } diff --git a/TypeScript/9RouterHooks/types/routers/item_events/WishlistItemEventRouter.d.ts b/TypeScript/9RouterHooks/types/routers/item_events/WishlistItemEventRouter.d.ts index bc6d257..712f484 100644 --- a/TypeScript/9RouterHooks/types/routers/item_events/WishlistItemEventRouter.d.ts +++ b/TypeScript/9RouterHooks/types/routers/item_events/WishlistItemEventRouter.d.ts @@ -6,5 +6,5 @@ export declare class WishlistItemEventRouter extends ItemEventRouterDefinition { protected wishlistCallbacks: WishlistCallbacks; constructor(wishlistCallbacks: WishlistCallbacks); getHandledRoutes(): HandledRoute[]; - handleItemEvent(url: string, pmcData: IPmcData, body: any, sessionID: string): Promise; + handleItemEvent(url: string, pmcData: IPmcData, request: any, sessionID: string): Promise; } diff --git a/TypeScript/9RouterHooks/types/routers/static/GameStaticRouter.d.ts b/TypeScript/9RouterHooks/types/routers/static/GameStaticRouter.d.ts index bf045af..f7287a2 100644 --- a/TypeScript/9RouterHooks/types/routers/static/GameStaticRouter.d.ts +++ b/TypeScript/9RouterHooks/types/routers/static/GameStaticRouter.d.ts @@ -1,6 +1,8 @@ import { GameCallbacks } from "@spt/callbacks/GameCallbacks"; import { StaticRouter } from "@spt/di/Router"; +import { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; export declare class GameStaticRouter extends StaticRouter { + protected httpResponse: HttpResponseUtil; protected gameCallbacks: GameCallbacks; - constructor(gameCallbacks: GameCallbacks); + constructor(httpResponse: HttpResponseUtil, gameCallbacks: GameCallbacks); } diff --git a/TypeScript/9RouterHooks/types/servers/SaveServer.d.ts b/TypeScript/9RouterHooks/types/servers/SaveServer.d.ts index 15e1109..54c0f0a 100644 --- a/TypeScript/9RouterHooks/types/servers/SaveServer.d.ts +++ b/TypeScript/9RouterHooks/types/servers/SaveServer.d.ts @@ -1,6 +1,5 @@ import { SaveLoadRouter } from "@spt/di/Router"; import { ISptProfile, Info } from "@spt/models/eft/profile/ISptProfile"; -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"; @@ -19,7 +18,6 @@ export declare class SaveServer { protected profiles: {}; protected onBeforeSaveCallbacks: {}; protected saveMd5: {}; - protected coreConfig: ICoreConfig; constructor(vfs: VFS, saveLoadRouters: SaveLoadRouter[], jsonUtil: JsonUtil, hashUtil: HashUtil, localisationService: LocalisationService, logger: ILogger, configServer: ConfigServer); /** * Add callback to occur prior to saving profile changes diff --git a/TypeScript/9RouterHooks/types/servers/ws/SptWebSocketConnectionHandler.d.ts b/TypeScript/9RouterHooks/types/servers/ws/SptWebSocketConnectionHandler.d.ts index 098c550..cdfc42d 100644 --- a/TypeScript/9RouterHooks/types/servers/ws/SptWebSocketConnectionHandler.d.ts +++ b/TypeScript/9RouterHooks/types/servers/ws/SptWebSocketConnectionHandler.d.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "http"; +import { IncomingMessage } from "node:http"; import { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { IWsNotificationEvent } from "@spt/models/eft/ws/IWsNotificationEvent"; import { IHttpConfig } from "@spt/models/spt/config/IHttpConfig"; diff --git a/TypeScript/9RouterHooks/types/services/AirdropService.d.ts b/TypeScript/9RouterHooks/types/services/AirdropService.d.ts new file mode 100644 index 0000000..465ee48 --- /dev/null +++ b/TypeScript/9RouterHooks/types/services/AirdropService.d.ts @@ -0,0 +1,53 @@ +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { WeightedRandomHelper } from "@spt/helpers/WeightedRandomHelper"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IGetAirdropLootResponse } from "@spt/models/eft/location/IGetAirdropLootResponse"; +import { AirdropTypeEnum } from "@spt/models/enums/AirdropType"; +import { IAirdropConfig } from "@spt/models/spt/config/IAirdropConfig"; +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 { HashUtil } from "@spt/utils/HashUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class AirdropService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected weightedRandomHelper: WeightedRandomHelper; + protected localisationService: LocalisationService; + protected itemFilterService: ItemFilterService; + protected lootGenerator: LootGenerator; + protected databaseService: DatabaseService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected airdropConfig: IAirdropConfig; + constructor(logger: ILogger, hashUtil: HashUtil, itemHelper: ItemHelper, weightedRandomHelper: WeightedRandomHelper, localisationService: LocalisationService, itemFilterService: ItemFilterService, lootGenerator: LootGenerator, databaseService: DatabaseService, configServer: ConfigServer, cloner: ICloner); + /** + * Handle client/location/getAirdropLoot + * Get loot for an airdrop container + * Generates it randomly based on config/airdrop.json values + * @returns Array of LootItem objects + */ + generateAirdropLoot(): IGetAirdropLootResponse; + /** + * Create a container create item based on passed in airdrop type + * @param airdropType What tpye of container: weapon/common etc + * @returns Item + */ + protected getAirdropCrateItem(airdropType: AirdropTypeEnum): IItem; + /** + * Randomly pick a type of airdrop loot using weighted values from config + * @returns airdrop type value + */ + protected chooseAirdropType(): AirdropTypeEnum; + /** + * Get the configuration for a specific type of airdrop + * @param airdropType Type of airdrop to get settings for + * @returns LootRequest + */ + protected getAirdropLootConfigByType(airdropType: AirdropTypeEnum): LootRequest; +} diff --git a/TypeScript/9RouterHooks/types/services/BotEquipmentFilterService.d.ts b/TypeScript/9RouterHooks/types/services/BotEquipmentFilterService.d.ts index 780d7a2..7d51b1e 100644 --- a/TypeScript/9RouterHooks/types/services/BotEquipmentFilterService.d.ts +++ b/TypeScript/9RouterHooks/types/services/BotEquipmentFilterService.d.ts @@ -1,6 +1,6 @@ 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 { EquipmentChances, IBotType, IGeneration, IGenerationData, IModsChances } 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"; @@ -26,13 +26,13 @@ export declare class BotEquipmentFilterService { * @param equipmentChanges Changes to apply * @param baseValues data to update */ - protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | ModsChances): void; + protected adjustChances(equipmentChanges: Record, baseValues: EquipmentChances | IModsChances): void; /** * Iterate over the Generation changes and alter data in baseValues.Generation * @param generationChanges Changes to apply * @param baseBotGeneration dictionary to update */ - protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: Generation): void; + protected adjustGenerationChances(generationChanges: Record, baseBotGeneration: IGeneration): void; /** * Get equipment settings for bot * @param botEquipmentRole equipment role to return diff --git a/TypeScript/9RouterHooks/types/services/BotEquipmentModPoolService.d.ts b/TypeScript/9RouterHooks/types/services/BotEquipmentModPoolService.d.ts index 7b2b442..080dc7b 100644 --- a/TypeScript/9RouterHooks/types/services/BotEquipmentModPoolService.d.ts +++ b/TypeScript/9RouterHooks/types/services/BotEquipmentModPoolService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Mods } from "@spt/models/eft/common/tables/IBotType"; +import { IMods } 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"; @@ -16,8 +16,8 @@ export declare class BotEquipmentModPoolService { protected localisationService: LocalisationService; protected configServer: ConfigServer; protected botConfig: IBotConfig; - protected weaponModPool: Mods; - protected gearModPool: Mods; + protected weaponModPool: IMods; + protected gearModPool: IMods; protected weaponPoolGenerated: boolean; protected armorPoolGenerated: boolean; constructor(logger: ILogger, vfs: VFS, itemHelper: ItemHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer); diff --git a/TypeScript/9RouterHooks/types/services/BotGenerationCacheService.d.ts b/TypeScript/9RouterHooks/types/services/BotGenerationCacheService.d.ts index ba27266..181031a 100644 --- a/TypeScript/9RouterHooks/types/services/BotGenerationCacheService.d.ts +++ b/TypeScript/9RouterHooks/types/services/BotGenerationCacheService.d.ts @@ -43,5 +43,7 @@ export declare class BotGenerationCacheService { * Does cache have a bot with requested key * @returns false if empty */ - cacheHasBotOfRole(key: string): boolean; + cacheHasBotWithKey(key: string, size?: number): boolean; + getCachedBotCount(key: string): number; + createCacheKey(role: string, difficulty: string): string; } diff --git a/TypeScript/9RouterHooks/types/services/BotNameService.d.ts b/TypeScript/9RouterHooks/types/services/BotNameService.d.ts new file mode 100644 index 0000000..e5b0f22 --- /dev/null +++ b/TypeScript/9RouterHooks/types/services/BotNameService.d.ts @@ -0,0 +1,45 @@ +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +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 { RandomUtil } from "@spt/utils/RandomUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +import { DatabaseService } from "./DatabaseService"; +import { LocalisationService } from "./LocalisationService"; +export declare class BotNameService { + protected logger: ILogger; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected localisationService: LocalisationService; + protected configServer: ConfigServer; + protected cloner: ICloner; + protected botConfig: IBotConfig; + protected pmcConfig: IPmcConfig; + protected usedNameCache: Set; + constructor(logger: ILogger, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, localisationService: LocalisationService, configServer: ConfigServer, cloner: ICloner); + /** + * Clear out any entries in Name Set + */ + clearNameCache(): void; + /** + * Create a unique bot nickname + * @param firstNames FIRST names to choose from + * @param lastNames OPTIONAL: Names to choose from + * @param botGenerationDetails + * @param botRole role of bot e.g. assault + * @param uniqueRoles Lowercase roles to always make unique + * @param sessionId OPTIONAL: profile session id + * @returns Nickname for bot + */ + generateUniqueBotNickname(firstNames: string[], lastNames: string[], botGenerationDetails: BotGenerationDetails, botRole: string, uniqueRoles?: string[], sessionId?: string): string; + /** + * Should this bot have a name like "name (Pmc Name)" + * @param botRole Role bot has + * @returns True if name should be simulated pscav + */ + protected shouldSimulatePlayerScavName(botRole: string): boolean; + protected addPlayerScavNameSimulationSuffix(nickname: string): string; +} diff --git a/TypeScript/9RouterHooks/types/services/BotWeaponModLimitService.d.ts b/TypeScript/9RouterHooks/types/services/BotWeaponModLimitService.d.ts index 63c4967..cce8f29 100644 --- a/TypeScript/9RouterHooks/types/services/BotWeaponModLimitService.d.ts +++ b/TypeScript/9RouterHooks/types/services/BotWeaponModLimitService.d.ts @@ -1,5 +1,5 @@ import { ItemHelper } from "@spt/helpers/ItemHelper"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -39,7 +39,7 @@ export declare class BotWeaponModLimitService { * @param modsParent The parent of the mod to be checked * @returns true if over item limit */ - weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: Item[]): boolean; + weaponModHasReachedLimit(botRole: string, modTemplate: ITemplateItem, modLimits: BotModLimits, modsParent: ITemplateItem, weapon: IItem[]): boolean; /** * Check if the specific item type on the weapon has reached the set limit * @param modTpl log mod tpl if over type limit diff --git a/TypeScript/9RouterHooks/types/services/CircleOfCultistService.d.ts b/TypeScript/9RouterHooks/types/services/CircleOfCultistService.d.ts new file mode 100644 index 0000000..7b21750 --- /dev/null +++ b/TypeScript/9RouterHooks/types/services/CircleOfCultistService.d.ts @@ -0,0 +1,132 @@ +import { HideoutHelper } from "@spt/helpers/HideoutHelper"; +import { InventoryHelper } from "@spt/helpers/InventoryHelper"; +import { ItemHelper } from "@spt/helpers/ItemHelper"; +import { PresetHelper } from "@spt/helpers/PresetHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { IBotHideoutArea } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IStageRequirement } from "@spt/models/eft/hideout/IHideoutArea"; +import { IHideoutCircleOfCultistProductionStartRequestData } from "@spt/models/eft/hideout/IHideoutCircleOfCultistProductionStartRequestData"; +import { IHideoutProduction, IHideoutProductionData, IRequirementBase, Requirement } from "@spt/models/eft/hideout/IHideoutProduction"; +import { IItemEventRouterResponse } from "@spt/models/eft/itemEvent/IItemEventRouterResponse"; +import { DirectRewardSettings, 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 { ItemFilterService } from "@spt/services/ItemFilterService"; +import { SeasonalEventService } from "@spt/services/SeasonalEventService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class CircleOfCultistService { + protected logger: ILogger; + protected timeUtil: TimeUtil; + protected cloner: ICloner; + protected eventOutputHolder: EventOutputHolder; + protected randomUtil: RandomUtil; + protected hashUtil: HashUtil; + protected itemHelper: ItemHelper; + protected presetHelper: PresetHelper; + protected profileHelper: ProfileHelper; + protected inventoryHelper: InventoryHelper; + protected hideoutHelper: HideoutHelper; + protected databaseService: DatabaseService; + protected itemFilterService: ItemFilterService; + protected seasonalEventService: SeasonalEventService; + protected configServer: ConfigServer; + protected static circleOfCultistSlotId: string; + protected hideoutConfig: IHideoutConfig; + constructor(logger: ILogger, timeUtil: TimeUtil, cloner: ICloner, eventOutputHolder: EventOutputHolder, randomUtil: RandomUtil, hashUtil: HashUtil, itemHelper: ItemHelper, presetHelper: PresetHelper, profileHelper: ProfileHelper, inventoryHelper: InventoryHelper, hideoutHelper: HideoutHelper, databaseService: DatabaseService, itemFilterService: ItemFilterService, seasonalEventService: SeasonalEventService, configServer: ConfigServer); + /** + * Start a sacrifice event + * Generate rewards + * Delete sacrificed items + * @param sessionId Session id + * @param pmcData Player profile doing sacrifice + * @param request Client request + * @returns IItemEventRouterResponse + */ + startSacrifice(sessionId: string, pmcData: IPmcData, request: IHideoutCircleOfCultistProductionStartRequestData): IItemEventRouterResponse; + /** + * Register production inside player profile + * @param sessionId Session id + * @param pmcData Player profile + * @param recipeId Recipe id + * @param sacrificedItems Items player sacrificed + * @param rewardAmountRoubles Rouble amount to reward player in items with + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + */ + protected registerCircleOfCultistProduction(sessionId: string, pmcData: IPmcData, recipeId: string, sacrificedItems: IItem[], rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): void; + /** + * Get the circle craft time as seconds, value is based on reward item value + * OR rewards are direct, then use custom craft time defined in oarameter object + * @param rewardAmountRoubles Value of rewards in roubles + * @param directRewardSettings OPTIONAL: If craft is giving direct rewards + * @returns craft time seconds + */ + protected getCircleCraftTimeSeconds(rewardAmountRoubles: number, directRewardSettings?: DirectRewardSettings): number; + /** + * Get the items player sacrificed in circle + * @param pmcData Player profile + * @returns Array of its from player inventory + */ + protected getSacrificedItems(pmcData: IPmcData): IItem[]; + /** + * Given a pool of items + rouble budget, pick items until the budget is reached + * @param rewardItemTplPool Items that can be picekd + * @param rewardBudget Rouble budget to reach + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getRewardsWithinBudget(rewardItemTplPool: string[], rewardBudget: number, cultistCircleStashId: string): IItem[][]; + /** + * Give every item as a reward that's passed in + * @param rewardTpls Item tpls to turn into reward items + * @param cultistCircleStashId Id of stash item + * @returns Array of item arrays + */ + protected getExplicitRewards(explicitRewardSettings: DirectRewardSettings, cultistCircleStashId: string): IItem[][]; + /** + * Explicit rewards have thier own stack sizes as they dont use a reward rouble pool + * @param rewardTpl Item being rewarded to get stack size of + * @returns stack size of item + */ + protected getExplicitRewardBaseTypeStackSize(rewardTpl: string): number; + /** + * Get the size of a reward items stack + * 1 for everything except ammo, ammo can be between min stack and max stack + * @param itemTpl Item chosen + * @param rewardPoolRemaining Rouble amount of pool remaining to fill + * @returns Size of stack + */ + protected getRewardStackSize(itemTpl: string, rewardPoolRemaining: number): number; + /** + * Get a pool of tpl IDs of items the player needs to complete hideout crafts/upgrade areas + * @param sessionId Session id + * @param pmcData Profile of player who will be getting the rewards + * @returns Array of tpls + */ + protected getCultistCircleRewardPool(sessionId: string, pmcData: IPmcData): string[]; + /** + * Get all active hideout areas + * @param areas Hideout areas to iterate over + * @returns Active area array + */ + protected getPlayerAccessibleHideoutAreas(areas: IBotHideoutArea[]): IBotHideoutArea[]; + /** + * Get all recipes the player has access to, includes base + unlocked recipes + * @param unlockedRecipes Recipes player has flagged as unlocked + * @param allRecipes All recipes + * @returns Array of recipes + */ + protected getPlayerAccessibleRecipes(unlockedRecipes: string[], allRecipes: IHideoutProductionData): IHideoutProduction[]; + /** + * Iterate over passed in hideout requirements and return the Item + * @param requirements Requirements to iterate over + * @returns Array of item requirements + */ + protected getItemRequirements(requirements: IRequirementBase[]): (IStageRequirement | Requirement)[]; +} diff --git a/TypeScript/9RouterHooks/types/services/CustomLocationWaveService.d.ts b/TypeScript/9RouterHooks/types/services/CustomLocationWaveService.d.ts index c72d5bb..f69ce2b 100644 --- a/TypeScript/9RouterHooks/types/services/CustomLocationWaveService.d.ts +++ b/TypeScript/9RouterHooks/types/services/CustomLocationWaveService.d.ts @@ -1,4 +1,4 @@ -import { BossLocationSpawn, Wave } from "@spt/models/eft/common/ILocationBase"; +import { IBossLocationSpawn, IWave } 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"; @@ -16,13 +16,13 @@ export declare class CustomLocationWaveService { * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Boss wave to add to map */ - addBossWaveToMap(locationId: string, waveToAdd: BossLocationSpawn): void; + addBossWaveToMap(locationId: string, waveToAdd: IBossLocationSpawn): void; /** * Add a normal bot wave to a map * @param locationId e.g. factory4_day, bigmap * @param waveToAdd Wave to add to map */ - addNormalWaveToMap(locationId: string, waveToAdd: Wave): void; + addNormalWaveToMap(locationId: string, waveToAdd: IWave): void; /** * Clear all custom boss waves from a map * @param locationId e.g. factory4_day, bigmap diff --git a/TypeScript/9RouterHooks/types/services/DatabaseService.d.ts b/TypeScript/9RouterHooks/types/services/DatabaseService.d.ts index 711a069..cbe3307 100644 --- a/TypeScript/9RouterHooks/types/services/DatabaseService.d.ts +++ b/TypeScript/9RouterHooks/types/services/DatabaseService.d.ts @@ -3,6 +3,7 @@ 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 { ILocationServices } from "@spt/models/eft/common/tables/ILocationServices"; 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"; @@ -110,4 +111,8 @@ export declare class DatabaseService { * @returns assets/database/traders/ */ getTrader(traderId: string): ITrader; + /** + * @returns assets/database/locationServices/ + */ + getLocationServices(): ILocationServices; } diff --git a/TypeScript/9RouterHooks/types/services/FenceService.d.ts b/TypeScript/9RouterHooks/types/services/FenceService.d.ts index 58dc076..b4079e6 100644 --- a/TypeScript/9RouterHooks/types/services/FenceService.d.ts +++ b/TypeScript/9RouterHooks/types/services/FenceService.d.ts @@ -3,8 +3,8 @@ 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 { IItem, IUpdRepairable } from "@spt/models/eft/common/tables/IItem"; +import { ISlot, ITemplateItem } 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"; @@ -79,21 +79,21 @@ export declare class FenceService { * @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; + addItemsToFenceAssort(items: IItem[], mainItem: IItem): 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; + getItemPrice(itemTpl: string, items: IItem[]): 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; + protected getAmmoBoxPrice(items: IItem[]): number; /** * Adjust all items contained inside an assort by a multiplier * @param assort (clone)Assort that contains items with prices to adjust @@ -115,7 +115,7 @@ export declare class FenceService { * @param modifier value to multiply item price by * @param presetModifier value to multiply preset price by */ - protected adjustItemPriceByModifier(item: Item, assort: ITraderAssort, modifier: number, presetModifier: number): void; + protected adjustItemPriceByModifier(item: IItem, assort: ITraderAssort, modifier: number, presetModifier: number): void; /** * Get fence assorts with no price adjustments based on fence rep * @returns ITraderAssort @@ -146,7 +146,7 @@ export declare class FenceService { * @param generationValues Base counts assorts should be adjusted to * @returns IGenerationAssortValues object with adjustments needed to reach desired state */ - protected getItemCountsToGenerate(assortItems: Item[], generationValues: IGenerationAssortValues): IGenerationAssortValues; + protected getItemCountsToGenerate(assortItems: IItem[], generationValues: IGenerationAssortValues): IGenerationAssortValues; /** * Delete desired number of items from assort (including children) * @param itemCountToReplace @@ -158,7 +158,7 @@ export declare class FenceService { * @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; + protected removeRandomItemFromAssorts(assort: ITraderAssort, rootItems: IItem[]): void; /** * Get an integer rounded count of items to replace based on percentrage from traderConfig value * @param totalItemCount total item count @@ -217,14 +217,14 @@ export declare class FenceService { * @param itemsWithChildren Items to search through * @returns Matching assort item */ - protected getMatchingItem(rootItemBeingAdded: Item, itemDbDetails: ITemplateItem, itemsWithChildren: Item[][]): Item | undefined; + protected getMatchingItem(rootItemBeingAdded: IItem, itemDbDetails: ITemplateItem, itemsWithChildren: IItem[][]): IItem | 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 itemShouldBeForceStacked(existingItem: IItem, itemDbDetails: ITemplateItem): boolean; protected itemInPreventDupeCategoryList(tpl: string): boolean; /** * Adjust price of item based on what is left to buy (resource/uses left) @@ -232,7 +232,7 @@ export declare class FenceService { * @param itemRoot Root item having price adjusted * @param itemTemplate Db template of item */ - protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: Item, itemTemplate: ITemplateItem): void; + protected adjustItemPriceByQuality(barterSchemes: Record, itemRoot: IItem, itemTemplate: ITemplateItem): void; protected getMatchingItemLimit(itemTypeLimits: Record; + getGifts(): Record; /** * Get an array of all gift ids * @returns string array of gift ids @@ -47,13 +47,13 @@ export declare class GiftService { * @param giftData Gift to send player * @returns trader/user/system id */ - protected getSenderId(giftData: Gift): string | undefined; + protected getSenderId(giftData: IGift): string | undefined; /** * Convert GiftSenderType into a dialog MessageType * @param giftData Gift to send player * @returns MessageType enum value */ - protected getMessageType(giftData: Gift): MessageType | undefined; + protected getMessageType(giftData: IGift): MessageType | undefined; /** * Prapor sends gifts to player for first week after profile creation * @param sessionId Player id diff --git a/TypeScript/9RouterHooks/types/services/InsuranceService.d.ts b/TypeScript/9RouterHooks/types/services/InsuranceService.d.ts index d22e4c5..8b7b1b3 100644 --- a/TypeScript/9RouterHooks/types/services/InsuranceService.d.ts +++ b/TypeScript/9RouterHooks/types/services/InsuranceService.d.ts @@ -1,83 +1,59 @@ -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 { ProfileHelper } from "@spt/helpers/ProfileHelper"; import { TraderHelper } from "@spt/helpers/TraderHelper"; import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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 { HashUtil } from "@spt/utils/HashUtil"; import { RandomUtil } from "@spt/utils/RandomUtil"; import { TimeUtil } from "@spt/utils/TimeUtil"; import { ICloner } from "@spt/utils/cloners/ICloner"; -import { ProfileHelper } from "@spt/helpers/ProfileHelper"; export declare class InsuranceService { protected logger: ILogger; protected databaseService: DatabaseService; - protected secureContainerHelper: SecureContainerHelper; protected randomUtil: RandomUtil; protected itemHelper: ItemHelper; protected hashUtil: HashUtil; protected timeUtil: TimeUtil; protected saveServer: SaveServer; protected traderHelper: TraderHelper; - protected dialogueHelper: DialogueHelper; - protected handbookHelper: HandbookHelper; + protected profileHelper: ProfileHelper; protected localisationService: LocalisationService; - protected localeService: LocaleService; protected mailSendService: MailSendService; protected configServer: ConfigServer; protected cloner: ICloner; - protected profileHelper: ProfileHelper; - protected insured: Record>; + protected insured: Record>; protected insuranceConfig: IInsuranceConfig; - 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, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, randomUtil: RandomUtil, itemHelper: ItemHelper, hashUtil: HashUtil, timeUtil: TimeUtil, saveServer: SaveServer, traderHelper: TraderHelper, profileHelper: ProfileHelper, localisationService: LocalisationService, mailSendService: MailSendService, configServer: ConfigServer, cloner: ICloner); /** * Does player have insurance array * @param sessionId Player id * @returns True if exists */ - insuranceExists(sessionId: string): boolean; + isuranceDictionaryExists(sessionId: string): boolean; /** * Get all insured items by all traders for a profile * @param sessionId Profile id (session id) * @returns Item array */ - getInsurance(sessionId: string): Record; - /** - * Get insured items by profile id + trader id - * @param sessionId Profile id (session id) - * @param traderId Trader items were insured with - * @returns Item array - */ - getInsuranceItems(sessionId: string, traderId: string): Item[]; + getInsurance(sessionId: string): Record; resetInsurance(sessionId: string): void; /** - * Sends stored insured items as message to player - * @param pmcData profile to send insured items to + * Sends `i will go look for your stuff` trader message + + * Store lost insurance items inside profile for later retreval + * @param pmcData Profile to send insured items to * @param sessionID SessionId of current player - * @param mapId Id of the map player died/exited that caused the insurance to be issued on + * @param mapId Id of the location player died/exited that caused the insurance to be issued on */ - sendInsuredItems(pmcData: IPmcData, sessionID: string, mapId: string): void; - /** - * Check all root insured items and remove location property + set slotId to 'hideout' - * @param sessionId Session id - * @param traderId Trader id - */ - protected removeLocationProperty(sessionId: string, traderId: string): void; + startPostRaidInsuranceLostProcess(pmcData: IPmcData, sessionID: string, mapId: string): void; /** * Get a timestamp of when insurance items should be sent to player based on trader used to insure * Apply insurance return bonus if found in profile @@ -86,23 +62,6 @@ export declare class InsuranceService { * @returns Timestamp to return items to player in seconds */ protected getInsuranceReturnTimestamp(pmcData: IPmcData, trader: ITraderBase): number; - /** - * 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 player die in raid - * @returns Array of insured items lost in raid - */ - 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. @@ -117,19 +76,20 @@ export declare class InsuranceService { */ 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 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 + * For the passed in items, find the trader it was insured against + * @param sessionId Session id + * @param lostInsuredItems Insured items lost in a raid + * @param pmcProfile Player profile + * @returns IInsuranceEquipmentPkg array */ - protected getInsuredItemDetails(pmcData: IPmcData, preRaidItem: Item, insuredItemFromClient: IInsuredItemsData): Item; + mapInsuredItemsToTrader(sessionId: string, lostInsuredItems: IItem[], pmcProfile: IPmcData): IInsuranceEquipmentPkg[]; /** - * Reset slotId property to "hideout" when necessary (used to be in ) - * @param pmcData Players pmcData.Inventory.equipment value - * @param itemToReturn item we will send to player as insurance return + * Some items should never be returned in insurance but BSG send them in the request + * @param lostItem Item being returned in insurance + * @param inventoryItems Player inventory + * @returns True if item */ - protected updateSlotIdValue(playerBaseInventoryEquipmentId: string, itemToReturn: Item): void; + protected itemCannotBeLostOnDeath(lostItem: IItem, inventoryItems: IItem[]): boolean; /** * Add gear item to InsuredItems array in player profile * @param sessionID Session id @@ -157,7 +117,7 @@ export declare class InsuranceService { * @param traderId Trader item insured with * @param itemToAdd Insured item (with children) */ - addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: Item): void; + addInsuranceItemToArray(sessionId: string, traderId: string, itemToAdd: IItem): void; /** * Get price of insurance * multiplier from config * @param pmcData Player profile @@ -165,7 +125,7 @@ export declare class InsuranceService { * @param traderId Trader item is insured with * @returns price in roubles */ - getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: Item, traderId: string): number; + getRoublePriceToInsureItemWithTrader(pmcData: IPmcData, inventoryItem: IItem, 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 diff --git a/TypeScript/9RouterHooks/types/services/LegacyLocationLifecycleService.d.ts b/TypeScript/9RouterHooks/types/services/LegacyLocationLifecycleService.d.ts new file mode 100644 index 0000000..b3c20df --- /dev/null +++ b/TypeScript/9RouterHooks/types/services/LegacyLocationLifecycleService.d.ts @@ -0,0 +1,105 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +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 { IHideoutConfig } from "@spt/models/spt/config/IHideoutConfig"; +import { IInRaidConfig } from "@spt/models/spt/config/IInRaidConfig"; +import { ILocationConfig } from "@spt/models/spt/config/ILocationConfig"; +import { IMatchConfig } from "@spt/models/spt/config/IMatchConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LegacyLocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected matchConfig: IMatchConfig; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** + * Handle client/match/offline/end + * @deprecated + */ + endOfflineRaid(info: IEndOfflineRaidRequestData, sessionId: string): void; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, sessionId: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + /** + * Was extract by car + * @param extractName name of extract + * @returns true if car extract + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractWasViaCoop(extractName: string): boolean; + /** + * 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + protected sendCoopTakenFenceMessage(sessionId: string): void; +} diff --git a/TypeScript/9RouterHooks/types/services/LocationLifecycleService.d.ts b/TypeScript/9RouterHooks/types/services/LocationLifecycleService.d.ts new file mode 100644 index 0000000..10be5af --- /dev/null +++ b/TypeScript/9RouterHooks/types/services/LocationLifecycleService.d.ts @@ -0,0 +1,181 @@ +import { ApplicationContext } from "@spt/context/ApplicationContext"; +import { LocationLootGenerator } from "@spt/generators/LocationLootGenerator"; +import { LootGenerator } from "@spt/generators/LootGenerator"; +import { PlayerScavGenerator } from "@spt/generators/PlayerScavGenerator"; +import { HealthHelper } from "@spt/helpers/HealthHelper"; +import { InRaidHelper } from "@spt/helpers/InRaidHelper"; +import { ProfileHelper } from "@spt/helpers/ProfileHelper"; +import { TraderHelper } from "@spt/helpers/TraderHelper"; +import { ILocationBase } from "@spt/models/eft/common/ILocationBase"; +import { IPmcData } from "@spt/models/eft/common/IPmcData"; +import { Common, IQuestStatus, ITraderInfo } from "@spt/models/eft/common/tables/IBotBase"; +import { IItem } from "@spt/models/eft/common/tables/IItem"; +import { IEndLocalRaidRequestData, IEndRaidResult } from "@spt/models/eft/match/IEndLocalRaidRequestData"; +import { IStartLocalRaidRequestData } from "@spt/models/eft/match/IStartLocalRaidRequestData"; +import { IStartLocalRaidResponseData } from "@spt/models/eft/match/IStartLocalRaidResponseData"; +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 { IPmcConfig } from "@spt/models/spt/config/IPmcConfig"; +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 { ConfigServer } from "@spt/servers/ConfigServer"; +import { SaveServer } from "@spt/servers/SaveServer"; +import { BotGenerationCacheService } from "@spt/services/BotGenerationCacheService"; +import { BotLootCacheService } from "@spt/services/BotLootCacheService"; +import { BotNameService } from "@spt/services/BotNameService"; +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 { RaidTimeAdjustmentService } from "@spt/services/RaidTimeAdjustmentService"; +import { HashUtil } from "@spt/utils/HashUtil"; +import { RandomUtil } from "@spt/utils/RandomUtil"; +import { TimeUtil } from "@spt/utils/TimeUtil"; +import { ICloner } from "@spt/utils/cloners/ICloner"; +export declare class LocationLifecycleService { + protected logger: ILogger; + protected hashUtil: HashUtil; + protected saveServer: SaveServer; + protected timeUtil: TimeUtil; + protected randomUtil: RandomUtil; + protected profileHelper: ProfileHelper; + protected databaseService: DatabaseService; + protected inRaidHelper: InRaidHelper; + protected healthHelper: HealthHelper; + protected matchBotDetailsCacheService: MatchBotDetailsCacheService; + protected pmcChatResponseService: PmcChatResponseService; + protected playerScavGenerator: PlayerScavGenerator; + protected traderHelper: TraderHelper; + protected localisationService: LocalisationService; + protected insuranceService: InsuranceService; + protected botLootCacheService: BotLootCacheService; + protected configServer: ConfigServer; + protected botGenerationCacheService: BotGenerationCacheService; + protected mailSendService: MailSendService; + protected raidTimeAdjustmentService: RaidTimeAdjustmentService; + protected botNameService: BotNameService; + protected lootGenerator: LootGenerator; + protected applicationContext: ApplicationContext; + protected locationLootGenerator: LocationLootGenerator; + protected cloner: ICloner; + protected inRaidConfig: IInRaidConfig; + protected traderConfig: ITraderConfig; + protected ragfairConfig: IRagfairConfig; + protected hideoutConfig: IHideoutConfig; + protected locationConfig: ILocationConfig; + protected pmcConfig: IPmcConfig; + constructor(logger: ILogger, hashUtil: HashUtil, saveServer: SaveServer, timeUtil: TimeUtil, randomUtil: RandomUtil, profileHelper: ProfileHelper, databaseService: DatabaseService, inRaidHelper: InRaidHelper, healthHelper: HealthHelper, matchBotDetailsCacheService: MatchBotDetailsCacheService, pmcChatResponseService: PmcChatResponseService, playerScavGenerator: PlayerScavGenerator, traderHelper: TraderHelper, localisationService: LocalisationService, insuranceService: InsuranceService, botLootCacheService: BotLootCacheService, configServer: ConfigServer, botGenerationCacheService: BotGenerationCacheService, mailSendService: MailSendService, raidTimeAdjustmentService: RaidTimeAdjustmentService, botNameService: BotNameService, lootGenerator: LootGenerator, applicationContext: ApplicationContext, locationLootGenerator: LocationLootGenerator, cloner: ICloner); + /** Handle client/match/local/start */ + startLocalRaid(sessionId: string, request: IStartLocalRaidRequestData): IStartLocalRaidResponseData; + /** + * Replace map exits with scav exits when player is scavving + * @param playerSide Playders side (savage/usec/bear) + * @param location id of map being loaded + * @param locationData Maps locationbase data + */ + protected adjustExtracts(playerSide: string, location: string, locationData: ILocationBase): void; + /** + * Adjust the bot hostility values prior to entering a raid + * @param location map to adjust values of + */ + protected adjustBotHostilitySettings(location: ILocationBase): void; + /** + * Generate a maps base location (cloned) and loot + * @param name Map name + * @returns ILocationBase + */ + protected generateLocationAndLoot(name: string): ILocationBase; + endLocalRaid(sessionId: string, request: IEndLocalRaidRequestData): void; + /** + * Was extract by car + * @param extractName name of extract + * @returns True if extract was by car + */ + protected extractWasViaCar(extractName: string): boolean; + /** + * Handle when a player extracts using a car - Add rep to fence + * @param extractName name of the extract used + * @param pmcData Player profile + * @param sessionId Session id + */ + protected handleCarExtract(extractName: string, pmcData: IPmcData, 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(sessionId: string, pmcData: IPmcData, extractName: string): void; + /** + * Get the fence rep gain from using a car or coop extract + * @param pmcData Profile + * @param baseGain amount gained for the first extract + * @param extractCount Number of times extract was taken + * @returns Fence standing after taking extract + */ + protected getFenceStandingAfterExtract(pmcData: IPmcData, baseGain: number, extractCount: number): number; + protected sendCoopTakenFenceMessage(sessionId: string): void; + /** + * Did player take a COOP extract + * @param extractName Name of extract player took + * @returns True if coop extract + */ + protected extractTakenWasCoop(extractName: string): boolean; + protected handlePostRaidPlayerScav(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, isDead: boolean, request: IEndLocalRaidRequestData): void; + protected handlePostRaidPmc(sessionId: string, pmcProfile: IPmcData, scavProfile: IPmcData, postRaidProfile: IPmcData, isDead: boolean, isSurvived: boolean, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Convert post-raid quests into correct format + * Quest status comes back as a string version of the enum `Success`, not the expected value of 1 + * @param questsToProcess + * @returns IQuestStatus + */ + protected processPostRaidQuests(questsToProcess: IQuestStatus[]): IQuestStatus[]; + /** + * Adjust server trader settings if they differ from data sent by client + * @param tradersServerProfile Server + * @param tradersClientProfile Client + */ + protected applyTraderStandingAdjustments(tradersServerProfile: Record, tradersClientProfile: Record): void; + /** + * Check if player used BTR or transit item sending service and send items to player via mail if found + * @param sessionId Session id + * @param request End raid request + */ + protected handleItemTransferEvent(sessionId: string, request: IEndLocalRaidRequestData): void; + protected transferItemDelivery(sessionId: string, traderId: string, items: IItem[]): void; + protected handleInsuredItemLostEvent(sessionId: string, preRaidPmcProfile: IPmcData, request: IEndLocalRaidRequestData, locationName: string): void; + /** + * Return the equipped items from a players inventory + * @param items Players inventory to search through + * @returns an array of equipped items + */ + protected getEquippedGear(items: IItem[]): IItem[]; + /** + * Checks to see if player survives. run through will return false + * @param statusOnExit Exit value from offraidData object + * @returns true if Survived + */ + protected isPlayerSurvived(results: IEndRaidResult): boolean; + /** + * Is the player dead after a raid - dead = anything other than "survived" / "runner" + * @param statusOnExit Exit value from offraidData object + * @returns true if dead + */ + protected isPlayerDead(results: IEndRaidResult): boolean; + /** + * Reset the skill points earned in a raid to 0, ready for next raid + * @param commonSkills Profile common skills to update + */ + protected resetSkillPointsEarnedDuringRaid(commonSkills: Common[]): 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; +} diff --git a/TypeScript/9RouterHooks/types/services/MailSendService.d.ts b/TypeScript/9RouterHooks/types/services/MailSendService.d.ts index 8f1f974..5845520 100644 --- a/TypeScript/9RouterHooks/types/services/MailSendService.d.ts +++ b/TypeScript/9RouterHooks/types/services/MailSendService.d.ts @@ -3,7 +3,7 @@ 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 { IItem } 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"; @@ -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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendDirectNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, message: string, items?: IItem[], 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?: number, systemData?: ISystemData, ragfair?: MessageContentRagfair): void; + sendLocalisedNpcMessageToPlayer(sessionId: string, trader: Traders, messageType: MessageType, messageLocaleId: string, items?: IItem[], 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?: number, profileChangeEvents?: IProfileChangeEvent[]): void; + sendSystemMessageToPlayer(sessionId: string, message: string, items?: IItem[], 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?: IProfileChangeEvent[], maxStorageTimeSeconds?: number): void; + sendLocalisedSystemMessageToPlayer(sessionId: string, messageLocaleId: string, items?: IItem[], 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?: number): void; + sendUserMessageToPlayer(sessionId: string, senderDetails: IUserDialogInfo, message: string, items?: IItem[], 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 @@ -112,7 +112,7 @@ export declare class MailSendService { * @param items Possible items to choose from * @returns Chosen 'primary' item */ - protected getBaseItemFromRewards(items: Item[]): Item; + protected getBaseItemFromRewards(items: IItem[]): IItem; /** * Get a dialog with a specified entity (user/trader) * Create and store empty dialog if none exists in profile diff --git a/TypeScript/9RouterHooks/types/services/MapMarkerService.d.ts b/TypeScript/9RouterHooks/types/services/MapMarkerService.d.ts index aed5430..a3ef6df 100644 --- a/TypeScript/9RouterHooks/types/services/MapMarkerService.d.ts +++ b/TypeScript/9RouterHooks/types/services/MapMarkerService.d.ts @@ -1,5 +1,5 @@ import { IPmcData } from "@spt/models/eft/common/IPmcData"; -import { Item } from "@spt/models/eft/common/tables/IItem"; +import { IItem } 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"; @@ -13,21 +13,21 @@ export declare class MapMarkerService { * @param request Add marker request * @returns Item */ - createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): Item; + createMarkerOnMap(pmcData: IPmcData, request: IInventoryCreateMarkerRequestData): IItem; /** * Delete a map marker * @param pmcData Player profile * @param request Delete marker request * @returns Item */ - deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): Item; + deleteMarkerFromMap(pmcData: IPmcData, request: IInventoryDeleteMarkerRequestData): IItem; /** * Edit an existing map marker * @param pmcData Player profile * @param request Edit marker request * @returns Item */ - editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): Item; + editMarkerOnMap(pmcData: IPmcData, request: IInventoryEditMarkerRequestData): IItem; /** * Strip out characters from note string that are not: letter/numbers/unicode/spaces * @param mapNoteText Marker text to sanitise diff --git a/TypeScript/9RouterHooks/types/services/PaymentService.d.ts b/TypeScript/9RouterHooks/types/services/PaymentService.d.ts index 61d5731..51fced1 100644 --- a/TypeScript/9RouterHooks/types/services/PaymentService.d.ts +++ b/TypeScript/9RouterHooks/types/services/PaymentService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -66,7 +66,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns Sorting money items */ - protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): Item[]; + protected getSortedMoneyItemsInInventory(pmcData: IPmcData, currencyTpl: string, playerStashId: string): IItem[]; /** * Prioritise player stash first over player inventory * Post-raid healing would often take money out of the players pockets/secure container @@ -76,7 +76,7 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns sort order */ - protected prioritiseStashSort(a: Item, b: Item, inventoryItems: Item[], playerStashId: string): number; + protected prioritiseStashSort(a: IItem, b: IItem, inventoryItems: IItem[], playerStashId: string): number; /** * Recursivly check items parents to see if it is inside the players inventory, not stash * @param itemId item id to check @@ -84,5 +84,5 @@ export declare class PaymentService { * @param playerStashId Players stash id * @returns true if its in inventory */ - protected isInStash(itemId: string | undefined, inventoryItems: Item[], playerStashId: string): boolean; + protected isInStash(itemId: string | undefined, inventoryItems: IItem[], playerStashId: string): boolean; } diff --git a/TypeScript/9RouterHooks/types/services/PmcChatResponseService.d.ts b/TypeScript/9RouterHooks/types/services/PmcChatResponseService.d.ts index 4a22f10..f44b12d 100644 --- a/TypeScript/9RouterHooks/types/services/PmcChatResponseService.d.ts +++ b/TypeScript/9RouterHooks/types/services/PmcChatResponseService.d.ts @@ -1,7 +1,7 @@ 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 { IAggressor, IVictim } 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"; @@ -31,14 +31,14 @@ export declare class PmcChatResponseService { * @param pmcVictims Array of bots killed by player * @param pmcData Player profile */ - sendVictimResponse(sessionId: string, pmcVictims: Victim[], pmcData: IPmcData): void; + sendVictimResponse(sessionId: string, pmcVictims: IVictim[], pmcData: IPmcData): void; /** * Not fully implemented yet, needs method of acquiring killers details after raid * @param sessionId Session id * @param pmcData Players profile * @param killer The bot who killed the player */ - sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: Aggressor): void; + sendKillerResponse(sessionId: string, pmcData: IPmcData, killer: IAggressor): void; /** * Choose a localised message to send the player (different if sender was killed or killed player) * @param isVictim Is the message coming from a bot killed by the player @@ -87,11 +87,11 @@ export declare class PmcChatResponseService { * @param pmcVictims Possible victims to choose from * @returns IUserDialogInfo */ - protected chooseRandomVictim(pmcVictims: Victim[]): IUserDialogInfo; + protected chooseRandomVictim(pmcVictims: IVictim[]): IUserDialogInfo; /** * Convert a victim object into a IUserDialogInfo object * @param pmcVictim victim to convert * @returns IUserDialogInfo */ - protected getVictimDetails(pmcVictim: Victim): IUserDialogInfo; + protected getVictimDetails(pmcVictim: IVictim): IUserDialogInfo; } diff --git a/TypeScript/9RouterHooks/types/services/ProfileFixerService.d.ts b/TypeScript/9RouterHooks/types/services/ProfileFixerService.d.ts index 91e4780..458828f 100644 --- a/TypeScript/9RouterHooks/types/services/ProfileFixerService.d.ts +++ b/TypeScript/9RouterHooks/types/services/ProfileFixerService.d.ts @@ -4,7 +4,7 @@ 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 { IBonus, IHideoutSlot } 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"; @@ -49,74 +49,46 @@ export declare class ProfileFixerService { * @param scavProfile profile to check and fix */ 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; /** - * Add tag to profile to indicate when it was made - * @param fullProfile + * Attempt to fix common item issues that corrupt profiles + * @param pmcProfile Profile to check items of */ - addMissingSptVersionTagToProfile(fullProfile: ISptProfile): void; + fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; /** * TODO - make this non-public - currently used by RepeatableQuestController * Remove unused condition counters * @param pmcProfile profile to remove old counters from */ removeDanglingConditionCounters(pmcProfile: IPmcData): void; - addLighthouseKeeperIfMissing(pmcProfile: IPmcData): void; - protected addUnlockedInfoObjectIfMissing(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 fixNullRagfairRatings(pmcProfile: IPmcData): void; - protected fixNullTraderSalesSums(pmcProfile: IPmcData): void; - protected addMissingBonusesProperty(pmcProfile: IPmcData): void; /** - * Adjust profile quest status and statusTimers object values - * quest.status is numeric e.g. 2 - * quest.statusTimers keys are numeric as strings e.g. "2" - * @param profile profile to update + * After removing mods that add quests, the quest panel will break without removing these + * @param pmcProfile Profile to remove dead quests from */ - protected updateProfileQuestDataValues(profile: IPmcData): void; - protected addMissingRepeatableQuestsProperty(pmcProfile: IPmcData): void; + protected removeOrphanedQuests(pmcProfile: IPmcData): void; /** - * Some profiles have hideout maxed and therefore no improvements - * @param pmcProfile Profile to add improvement data to + * If the profile has elite Hideout Managment skill, add the additional slots from globals + * NOTE: This seems redundant, but we will leave it here just incase. + * @param pmcProfile profile to add slots to */ - protected addMissingWallImprovements(pmcProfile: IPmcData): void; - /** - * A new property was added to slot items "locationIndex", if this is missing, the hideout slot item must be removed - * @param pmcProfile Profile to find and remove slots from - */ - protected removeResourcesFromSlotsInHideoutWithoutLocationIndexValue(pmcProfile: IPmcData): void; - /** - * Hideout slots need to be in a specific order, locationIndex in ascending order - * @param pmcProfile profile to edit - */ - protected reorderHideoutAreasWithResouceInputs(pmcProfile: IPmcData): void; + protected addHideoutEliteSlots(pmcProfile: IPmcData): void; /** * add in objects equal to the number of slots * @param areaType area to check * @param pmcProfile profile to update */ protected addEmptyObjectsToHideoutAreaSlots(areaType: HideoutAreas, emptyItemCount: number, pmcProfile: IPmcData): void; - protected addObjectsToArray(count: number, slots: HideoutSlot[]): HideoutSlot[]; + protected addObjectsToArray(count: number, slots: IHideoutSlot[]): IHideoutSlot[]; /** - * 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 + * Check for and cap profile skills at 5100. + * @param pmcProfile profile to check and fix */ - addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; - /** - * @param profileBonuses bonuses from profile - * @param bonus bonus to find - * @returns matching bonus - */ - protected getBonusFromProfile(profileBonuses: Bonus[], bonus: StageBonus): Bonus | undefined; + protected checkForSkillsOverMaxLevel(pmcProfile: IPmcData): void; /** * Checks profile inventiory for items that do not exist inside the items db * @param sessionId Session id @@ -137,58 +109,15 @@ export declare class ProfileFixerService { */ protected shouldRemoveMagazineBuild(magazineBuild: IMagazineBuild, itemsDb: Record): boolean; /** - * Attempt to fix common item issues that corrupt profiles - * @param pmcProfile Profile to check items of - */ - fixProfileBreakingInventoryItemIssues(pmcProfile: IPmcData): void; - /** - * Add `Improvements` object to hideout if missing - added in eft 13.0.21469 - * @param pmcProfile profile to update - */ - addMissingUpgradesPropertyToHideout(pmcProfile: IPmcData): void; - /** - * Iterate over associated profile template and check all hideout areas exist, add if not - * @param fullProfile Profile to update - */ - addMissingHideoutAreasToProfile(fullProfile: ISptProfile): void; - /** - * These used to be used for storing scav case rewards, rewards are now generated on pickup + * REQUIRED for dev profiles + * 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 */ - removeLegacyScavCaseProductionCrafts(pmcProfile: IPmcData): void; + addMissingHideoutBonusesToProfile(pmcProfile: IPmcData): void; /** - * 3.7.0 moved AIDs to be numeric, old profiles need to be migrated - * We store the old AID value in new field `sessionId` - * @param fullProfile Profile to update + * @param profileBonuses bonuses from profile + * @param bonus bonus to find + * @returns matching bonus */ - 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: 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; + protected getBonusFromProfile(profileBonuses: IBonus[], bonus: StageBonus): IBonus | undefined; } diff --git a/TypeScript/9RouterHooks/types/services/RagfairOfferService.d.ts b/TypeScript/9RouterHooks/types/services/RagfairOfferService.d.ts index 98dd179..7f28fe0 100644 --- a/TypeScript/9RouterHooks/types/services/RagfairOfferService.d.ts +++ b/TypeScript/9RouterHooks/types/services/RagfairOfferService.d.ts @@ -1,7 +1,7 @@ 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 { IItem } 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"; @@ -10,6 +10,7 @@ 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 { HttpResponseUtil } from "@spt/utils/HttpResponseUtil"; import { RagfairOfferHolder } from "@spt/utils/RagfairOfferHolder"; import { TimeUtil } from "@spt/utils/TimeUtil"; @@ -17,6 +18,7 @@ import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairOfferService { protected logger: ILogger; protected timeUtil: TimeUtil; + protected hashUtil: HashUtil; protected databaseService: DatabaseService; protected saveServer: SaveServer; protected ragfairServerHelper: RagfairServerHelper; @@ -32,7 +34,7 @@ export declare class RagfairOfferService { protected expiredOffers: Record; protected ragfairConfig: IRagfairConfig; protected ragfairOfferHandler: RagfairOfferHolder; - 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); + constructor(logger: ILogger, timeUtil: TimeUtil, hashUtil: HashUtil, 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 @@ -51,7 +53,7 @@ export declare class RagfairOfferService { * Get an array of arrays of expired offer items + children * @returns Expired offer assorts */ - getExpiredOfferAssorts(): Item[][]; + getExpiredOfferAssorts(): IItem[][]; /** * Clear out internal expiredOffers dictionary of all items */ @@ -95,5 +97,5 @@ export declare class RagfairOfferService { * @param items Offer items to unstack * @returns Unstacked array of items */ - protected unstackOfferItems(items: Item[]): Item[]; + protected unstackOfferItems(items: IItem[]): IItem[]; } diff --git a/TypeScript/9RouterHooks/types/services/RagfairPriceService.d.ts b/TypeScript/9RouterHooks/types/services/RagfairPriceService.d.ts index 0a2f26e..0284aee 100644 --- a/TypeScript/9RouterHooks/types/services/RagfairPriceService.d.ts +++ b/TypeScript/9RouterHooks/types/services/RagfairPriceService.d.ts @@ -5,8 +5,8 @@ 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 { IHandbookItem } from "@spt/models/eft/common/tables/IHandbookBase"; +import { IItem } 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"; @@ -56,7 +56,7 @@ export declare class RagfairPriceService implements OnLoad { * @param offerItems offer item + children to process * @returns Rouble price */ - getFleaPriceForOfferItems(offerItems: Item[]): number; + getFleaPriceForOfferItems(offerItems: IItem[]): number; /** * get the dynamic (flea) price for an item * @param itemTpl item template id to look up @@ -96,7 +96,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer Price is for a pack type offer * @returns cost of item in desired currency */ - getDynamicOfferPriceForOffer(offerItems: Item[], desiredCurrency: string, isPackOffer: boolean): number; + getDynamicOfferPriceForOffer(offerItems: IItem[], desiredCurrency: string, isPackOffer: boolean): number; /** * @param itemTemplateId items tpl value * @param desiredCurrency Currency to return result in @@ -105,7 +105,7 @@ export declare class RagfairPriceService implements OnLoad { * @param isPackOffer * @returns */ - getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: Item, offerItems?: Item[], isPackOffer?: boolean): number; + getDynamicItemPrice(itemTemplateId: string, desiredCurrency: string, item?: IItem, offerItems?: IItem[], 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 @@ -114,7 +114,7 @@ export declare class RagfairPriceService implements OnLoad { * @param price Current price of item * @returns Adjusted price of item */ - protected adjustUnreasonablePrice(handbookPrices: HandbookItem[], unreasonableItemChange: IUnreasonableModPrices, itemTpl: string, price: number): number; + protected adjustUnreasonablePrice(handbookPrices: IHandbookItem[], 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 @@ -143,7 +143,7 @@ export declare class RagfairPriceService implements OnLoad { * @param existingPrice price of existing base weapon * @returns price of weapon in roubles */ - protected getWeaponPresetPrice(weaponRootItem: Item, weaponWithChildren: Item[], existingPrice: number): number; + protected getWeaponPresetPrice(weaponRootItem: IItem, weaponWithChildren: IItem[], 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 @@ -156,7 +156,7 @@ export declare class RagfairPriceService implements OnLoad { * @param presets weapon presets to choose from * @returns Default preset object */ - protected getWeaponPreset(weapon: Item): { + protected getWeaponPreset(weapon: IItem): { isDefault: boolean; preset: IPreset; }; diff --git a/TypeScript/9RouterHooks/types/services/RagfairTaxService.d.ts b/TypeScript/9RouterHooks/types/services/RagfairTaxService.d.ts index 75d7b79..f42f1e8 100644 --- a/TypeScript/9RouterHooks/types/services/RagfairTaxService.d.ts +++ b/TypeScript/9RouterHooks/types/services/RagfairTaxService.d.ts @@ -1,20 +1,22 @@ 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 { IItem } 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"; +import { ICloner } from "@spt/utils/cloners/ICloner"; export declare class RagfairTaxService { protected logger: ILogger; protected databaseService: DatabaseService; protected ragfairPriceService: RagfairPriceService; protected itemHelper: ItemHelper; protected profileHelper: ProfileHelper; + protected cloner: ICloner; protected playerOfferTaxCache: Record; - constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper); + constructor(logger: ILogger, databaseService: DatabaseService, ragfairPriceService: RagfairPriceService, itemHelper: ItemHelper, profileHelper: ProfileHelper, cloner: ICloner); storeClientOfferTaxValue(sessionId: string, offer: IStorePlayerOfferTaxAmountRequestData): void; clearStoredOfferTaxById(offerIdToRemove: string): void; getStoredClientOfferTaxValueById(offerIdToGet: string): IStorePlayerOfferTaxAmountRequestData; @@ -28,6 +30,6 @@ export declare class RagfairTaxService { * @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; + calculateTax(item: IItem, pmcData: IPmcData, requirementsValue: number, offerItemCount: number, sellInOnePiece: boolean): number; + protected calculateItemWorth(item: IItem, itemTemplate: ITemplateItem, itemCount: number, pmcData: IPmcData, isRootItem?: boolean): number; } diff --git a/TypeScript/9RouterHooks/types/services/RaidTimeAdjustmentService.d.ts b/TypeScript/9RouterHooks/types/services/RaidTimeAdjustmentService.d.ts index bfc099a..3f32776 100644 --- a/TypeScript/9RouterHooks/types/services/RaidTimeAdjustmentService.d.ts +++ b/TypeScript/9RouterHooks/types/services/RaidTimeAdjustmentService.d.ts @@ -3,7 +3,7 @@ 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 { ILocationConfig, ILootMultiplier, IScavRaidTimeLocationSettings } 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"; @@ -30,7 +30,7 @@ export declare class RaidTimeAdjustmentService { * @param mapLootMultiplers Multiplers to adjust * @param loosePercent Percent to change values to */ - protected adjustLootMultipliers(mapLootMultiplers: LootMultiplier, loosePercent: number): void; + protected adjustLootMultipliers(mapLootMultiplers: ILootMultiplier, loosePercent: number): void; /** * Adjust bot waves to act as if player spawned later * @param mapBase map to adjust diff --git a/TypeScript/9RouterHooks/types/services/RepairService.d.ts b/TypeScript/9RouterHooks/types/services/RepairService.d.ts index 48f306e..ec6144e 100644 --- a/TypeScript/9RouterHooks/types/services/RepairService.d.ts +++ b/TypeScript/9RouterHooks/types/services/RepairService.d.ts @@ -4,7 +4,7 @@ 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 { IItem } 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"; @@ -100,7 +100,7 @@ export declare class RepairService { * @param repairKitDetails Repair kit details from db * @param repairKitInInventory Repair kit to update */ - protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: Item): void; + protected addMaxResourceToKitIfMissing(repairKitDetails: ITemplateItem, repairKitInInventory: IItem): void; /** * Chance to apply buff to an item (Armor/weapon) if repaired by armor kit * @param repairDetails Repair details of item @@ -112,7 +112,7 @@ export declare class RepairService { * @param itemConfig weapon/armor config * @param repairDetails Details for item to repair */ - addBuff(itemConfig: BonusSettings, item: Item): void; + addBuff(itemConfig: BonusSettings, item: IItem): void; /** * Check if item should be buffed by checking the item type and relevant player skill level * @param repairDetails Item that was repaired @@ -138,7 +138,7 @@ export declare class RepairService { export declare class RepairDetails { repairCost?: number; repairPoints?: number; - repairedItem: Item; + repairedItem: IItem; repairedItemIsArmor: boolean; repairAmount: number; repairedByKit: boolean; diff --git a/TypeScript/9RouterHooks/types/services/SeasonalEventService.d.ts b/TypeScript/9RouterHooks/types/services/SeasonalEventService.d.ts index 0750f38..ca4a33c 100644 --- a/TypeScript/9RouterHooks/types/services/SeasonalEventService.d.ts +++ b/TypeScript/9RouterHooks/types/services/SeasonalEventService.d.ts @@ -1,7 +1,7 @@ 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 { IInventory } 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"; @@ -109,7 +109,7 @@ export declare class SeasonalEventService { * @param botInventory Bots inventory to iterate over * @param botRole the role of the bot being processed */ - removeChristmasItemsFromBotInventory(botInventory: Inventory, botRole: string): void; + removeChristmasItemsFromBotInventory(botInventory: IInventory, botRole: string): void; /** * Make adjusted to server code based on the name of the event passed in * @param sessionId Player id diff --git a/TypeScript/9RouterHooks/types/services/TraderServicesService.d.ts b/TypeScript/9RouterHooks/types/services/TraderServicesService.d.ts deleted file mode 100644 index e441eb6..0000000 --- a/TypeScript/9RouterHooks/types/services/TraderServicesService.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -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/9RouterHooks/types/tools/ItemTplGenerator/itemOverrides.d.ts b/TypeScript/9RouterHooks/types/tools/ItemTplGenerator/itemOverrides.d.ts index fb2ba9a..5c4914a 100644 --- a/TypeScript/9RouterHooks/types/tools/ItemTplGenerator/itemOverrides.d.ts +++ b/TypeScript/9RouterHooks/types/tools/ItemTplGenerator/itemOverrides.d.ts @@ -31,6 +31,7 @@ declare const _default: { "5a29276886f77435ed1b117c": string; "628393620d8524273e7eb028": string; "638dfc803083a019d447768e": string; + "66760b3deb51b08bd40c2b08": string; "638e0057ab150a5f56238960": string; "6393262086e646067c176aa2": string; "63989ced706b793c7d60cfef": string; @@ -54,12 +55,14 @@ declare const _default: { "6614230055afee107f05e998": string; "661421c7c1f2f548c50ee649": string; "661423200d240a5f5d0f679b": string; + "66a0f0926fee20fa70036da6": string; "5d1340b3d7ad1a0b52682ed7": string; "55802d5f4bdc2dac148b458e": string; "5d1340cad7ad1a0b0b249869": string; "5d1340bdd7ad1a0e8d245aab": string; "5cbdaf89ae9215000e5b9c94": string; "5e21a3c67e40bd02257a008a": string; + "6241c2c2117ad530666a5108": string; "5914944186f774189e5e76c2": string; "5937ef2b86f77408a47244b3": string; "59387ac686f77401442ddd61": string; @@ -71,5 +74,7 @@ declare const _default: { "5e81ebcd8e146c7080625e15": string; "639c3fbbd0446708ee622ee9": string; "639af924d0446708ee62294e": string; + "66da1b49099cf6adcc07a36b": string; + "66da1b546916142b3b022777": string; }; export default _default; diff --git a/TypeScript/9RouterHooks/types/utils/HashUtil.d.ts b/TypeScript/9RouterHooks/types/utils/HashUtil.d.ts index 195dcdb..c938b6c 100644 --- a/TypeScript/9RouterHooks/types/utils/HashUtil.d.ts +++ b/TypeScript/9RouterHooks/types/utils/HashUtil.d.ts @@ -9,6 +9,12 @@ export declare class HashUtil { * @returns 24 character hash */ generate(): string; + /** + * is the passed in string a valid mongo id + * @param stringToCheck String to check + * @returns True when string is a valid mongo id + */ + isValidMongoId(stringToCheck: string): boolean; generateMd5ForData(data: string): string; generateSha1ForData(data: string): string; generateCRC32ForFile(filePath: fs.PathLike): number;